Commit Graph

383 Commits

Author SHA1 Message Date
Pascal Hartig
cd392929e0 FLIPPER_DISABLE_KEYTAR env var to use in-memory impl
Summary: Changelog: FLIPPER_DISABLE_KEYTAR env var can be used to force in-memory implementation

Reviewed By: lblasa

Differential Revision: D49183501

fbshipit-source-id: 4ce886303678485673750417b09f272dd3f66623
2023-09-12 04:21:41 -07:00
Pascal Hartig
777632b841 Add logging and fallback for failing vpnless requests
Summary:
If a requests fails due to lack of allow-listing or other incompatibilities, we will now fall back to VPN mode while logging an error that will hopefully end up at the plugin owner.

For this, there's a new `vpnMode` option on every request that can also be used to enforce a particular type.

There's a lot of verbose logging that's turned off by default but very handy when debugging. Also potentially useful for plugin authors that are looking into request issues.

Reviewed By: lblasa

Differential Revision: D49023365

fbshipit-source-id: 755393063e379587feda9ae13973877780a1d987
2023-09-11 03:28:06 -07:00
Anton Kastritskiy
4439411d29 bump or ignore types packages
Reviewed By: LukeDefeo

Differential Revision: D48782825

fbshipit-source-id: 00c46fa609847272b48f8f4476291666e9251c95
2023-09-04 14:52:34 -07:00
Anton Kastritskiy
806d684ddc Script to verify @types/* versions
Summary:
We recently raised a concern that for some packages types/* version is different than the package we are using. This can cause runtime errors as typescript can suggest usage that no longer reflects current API of a library. To combat this issue we decided to add a CI check to verify that major versions of types and a libriary match.

This script will be refined if in the next few diffs

Reviewed By: LukeDefeo

Differential Revision: D48779652

fbshipit-source-id: 2a826ba9d00565563553f04cd809ae0638db6282
2023-09-01 09:54:49 -07:00
Lorenzo Blasa
819c75c126 Verify server certificates before returning existing token
Summary:
If the server certificates have expired, then the returned token will no longer be valid as soon as the certificates are renewed.

So, validate this before returning any existing token.

This was not an issue before, as launching used to be the last step during bootstrapping.

Reviewed By: antonk52

Differential Revision: D48902334

fbshipit-source-id: 2458aa0df806db245994ee742f42bff47a533e23
2023-09-01 04:52:09 -07:00
Lorenzo Blasa
4e7a6a70cc Server shutdown only if no errors
Summary:
The socket will close as the endpoint is terminating the connection.

Status code 1000 and 1001 are used for normal closures. Either the connection is no longer needed or the endpoint is going away i.e. browser navigating away from the current page.

WS RFC: https://www.rfc-editor.org/rfc/rfc6455

Reviewed By: LukeDefeo

Differential Revision: D48896696

fbshipit-source-id: 22070ae34b7f35d35589db06108feb718e73e866
2023-09-01 03:25:26 -07:00
Lorenzo Blasa
457767c7cc Ready needs to be able to handle asynchronous code
Summary:
A previous diff introduced the isReady state as to make it possible to serve HTML content sooner than we are ready.

This worked great on debugging. As I was testing a release, it was discovered that there was a race condition and the server was not ready when it was already handling upgrade events.

To solve this, I've added another state flag in the form of a promise.

This one, can be waited on. This is used then during upgrade events as we can safely wait until the server is ready to accept incoming connections before proceeding with the upgrade.

Problem is shown below:

{F1080003241}
{F1080003356}

Reviewed By: passy

Differential Revision: D48829453

fbshipit-source-id: e148a392bbe66dd91710e32871e270c8950e25c2
2023-08-30 09:52:00 -07:00
Lorenzo Blasa
2858259497 Launch early, even if not ready
Summary:
Flipper Launcher downloads, unpacks, launches Flipper, and closes itself.

This is fine except for the fact that Flipper may be initiating and thus there's a gap of a few seconds until engineers see the main Flipper UI.

This change improves this by launching earlier, even if just showing a loading page until Flipper is actually ready.

Reviewed By: passy, aigoncharov

Differential Revision: D48824479

fbshipit-source-id: aa6147a09f313d80592c9b08d089660ba73773a4
2023-08-30 05:08:26 -07:00
Lorenzo Blasa
3e8f94ceda iOS get devices/targets/simulators cleanup
Summary: ^

Reviewed By: passy

Differential Revision: D48781211

fbshipit-source-id: 71133c07d15ca6a380d85e582d55cbdb192b5a19
2023-08-30 04:24:05 -07:00
Lorenzo Blasa
0045f15e2a isAvailable to isIdbAvailable
Summary: Make it more clear what are we checking about.

Reviewed By: aigoncharov

Differential Revision: D48781145

fbshipit-source-id: c3c03b407dc7f47730a3fb80de769243768b34ec
2023-08-30 04:24:05 -07:00
Lorenzo Blasa
03c0874f30 Query devices should be async
Summary: ^

Reviewed By: aigoncharov

Differential Revision: D48781102

fbshipit-source-id: c987be90c7bca7dbab40a89b389ee86ef2230393
2023-08-30 04:24:05 -07:00
Pascal Hartig
d4d8c965eb Show iOS version in launcher
Summary:
A little hacky because we currently have too many implementations for getting devices but lblasa is working on cleaning this up. Once that's done, we should add some tests for this.

Changelog: Show the iOS version of simulators in the launcher window

Reviewed By: lblasa

Differential Revision: D48777923

fbshipit-source-id: 18846520feba8eb10b6417f87bd802ffaabb1dff
2023-08-29 04:55:46 -07:00
Lorenzo Blasa
ef6e3df9df Remove the client from error log
Summary: Removing this information from the error as it will cause duplicated error tasks.

Reviewed By: passy

Differential Revision: D48646678

fbshipit-source-id: 26e5525318b4720568275a5086df00f21b7d2836
2023-08-24 10:05:17 -07:00
Lorenzo Blasa
865d551f8e Increase max payload size
Summary: ^

Reviewed By: passy, antonk52

Differential Revision: D48644784

fbshipit-source-id: 2cd0aeed94c31553243e1b335adbd4089feb0d7e
2023-08-24 10:05:17 -07:00
Lorenzo Blasa
1360e906f8 Centralise sessionId to a dedicated place
Summary:
The sessionId is just uuid() which is held by the config. This changes moves that to a single place.

This achieves two goals:
1) Makes it very clear where is created and what value it holds
2) It allows us to know the sessionId even before the config is available. This becomes useful as we can start logging to Scribe earlier.

Reviewed By: passy

Differential Revision: D48601829

fbshipit-source-id: c54d86d76f0b58d2b59f8dd1c45d7f345c4a84c3
2023-08-24 06:18:39 -07:00
Lorenzo Blasa
6405a7bfdd Hook with FB logger
Summary:
This change replaces the existing logging infra with the one defined and exposed in flipper-server-core.

Functionality remains the same with the addition of having support for Scribe.

Reviewed By: aigoncharov

Differential Revision: D48515246

fbshipit-source-id: 7970f6ad069821ee4f15136adc8da40d0b1fb0c7
2023-08-24 06:18:39 -07:00
Lorenzo Blasa
87bf73f1d5 FBLogger for flipper-server-core
Summary: ^

Reviewed By: passy

Differential Revision: D48557327

fbshipit-source-id: 0112dec9a1a7f0afddcc459459a9278bbbeb3fc7
2023-08-24 06:18:39 -07:00
Pascal Hartig
bb4090f529 Make intern headers configurable
Summary: The one-off hack for slog makes this hard to refactor, so I've added a headers field, putting the caller in charge of this.

Reviewed By: LukeDefeo

Differential Revision: D48564065

fbshipit-source-id: f8e78e9b8597fd3131bf3741197e6179807ad5da
2023-08-23 07:40:49 -07:00
Pascal Hartig
d484fb964c Add CPE X2P lookup support
Summary:
Basically a one-to-one conversion of https://www.internalfb.com/code/fbsource/[3171372e9b534c2ea0f318800cbd6de421e9d2d1]/fbcode/common/rust/cpe/src/

This is the information we need to connect to the local x2p daemon that allows us to talk to interngraph without vpn.

Reviewed By: lblasa

Differential Revision: D48562550

fbshipit-source-id: 8abff11f8ef76b16f6700eb89edabdb284306bb1
2023-08-23 07:40:49 -07:00
Lorenzo Blasa
c93a781247 ScribeMessage can now be used instead
Summary: As the type is now defined in flipper-common, it can be used.

Reviewed By: antonk52

Differential Revision: D48557043

fbshipit-source-id: 3838a189e431718cd1438d2dad5d7034d34bb93b
2023-08-23 07:15:29 -07:00
Lorenzo Blasa
17cfa0e571 Session Id moved to server config
Summary:
Session Id should be shared between client and server, but it was defined deep in the client (redux store).

The proposed solution presented below is to move the session id to the server configuration. By doing this, it becomes available to both server and client VERY early in the application life-cycle for both Electron and non-Electron builds.

Reviewed By: LukeDefeo

Differential Revision: D48520367

fbshipit-source-id: ca959b27ab18b1a2e4cd2fac1d28545664f1b514
2023-08-22 05:16:20 -07:00
Pascal Hartig
7dad33a626 Fix keytar types
Summary: The linter otherwise wants us to remove `awaits` which are in fact required.

Reviewed By: lblasa

Differential Revision: D48467534

fbshipit-source-id: 355aee4bc22098086600b85edf58c8ed077b8aaf
2023-08-21 04:00:56 -07:00
Lorenzo Blasa
3f37d29b95 Reintroduce timeout and is production check
Summary:
For dev, let's not kill the server.
Also, reintroduce a timeout of 60 seconds before disconnecting.

Reviewed By: antonk52

Differential Revision: D48432317

fbshipit-source-id: bac6f67101e5be481af06a5ea6ccb3b3134c4075
2023-08-17 13:46:08 -07:00
Lorenzo Blasa
ff6f98fc0d Import File implementation
Summary: Implementation was missing for the browser. This provides a default implementation.

Reviewed By: aigoncharov

Differential Revision: D48311198

fbshipit-source-id: fd067600f571234e0fbccfb90853b62f175ff8fb
2023-08-14 11:33:06 -07:00
Lorenzo Blasa
b5ed57b7d0 Remove UDS and thus the need for a proxy server
Summary: This change removes the UDS support and thus the need for having a proxy server.

Reviewed By: antonk52

Differential Revision: D48265244

fbshipit-source-id: c76bb4afba63959ddd17901b3887aa278b000beb
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
7f3f1c0507 TCP is the only option so remove unused branches
Summary: As TCP is the only option, remove all branches.

Reviewed By: passy

Differential Revision: D48265093

fbshipit-source-id: 174527f05d8a841797fd95256e77fdeb9b2e6ad5
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
bdc2d5f6eb If there are no connected clients, shutdown immediately
Summary: Instead of delaying the shutdown by a set timer, immediately shutdown.

Reviewed By: antonk52

Differential Revision: D48264571

fbshipit-source-id: 5e6556f2ecafb7cf9a19b3075e72f2be1abf9f95
2023-08-11 08:19:51 -07:00
Lorenzo Blasa
f93da44ee5 Remove idb device polling record
Summary:
If listing devices is successful, then don't record the event
as this is triggered every X amount of seconds.

Reviewed By: antonk52

Differential Revision: D47995681

fbshipit-source-id: 2d0fa68fd7b9c4ce74bad9e8cc0296691d9b8880
2023-08-11 08:19:51 -07:00
Andrey Goncharov
3b99e386a2 Fix comment
Reviewed By: LukeDefeo

Differential Revision: D48191671

fbshipit-source-id: 6978e831f48ffe4e8a8c6e71b819205cb3868966
2023-08-09 14:15:33 -07:00
Lorenzo Blasa
4e998ac083 Get OS by inspecting command
Summary: Commands can be idb or adb. If no ClientQuery is provided, set the OS accordingly.

Reviewed By: antonk52

Differential Revision: D47990745

fbshipit-source-id: 3e38b6ecb0a8ea21e584c1d6eff6feb53dd2cfab
2023-08-02 07:56:17 -07:00
Lorenzo Blasa
2c24ec9f5d Add OS to record
Summary: OS will become useful later on, add it.

Reviewed By: antonk52

Differential Revision: D47989161

fbshipit-source-id: 3615544051b163b77f87e5c52e6ac9cae8c478d4
2023-08-02 07:56:17 -07:00
Lorenzo Blasa
d43173a8df adb kill-server
Summary: Introduce a new command to allow killing adb

Reviewed By: antonk52

Differential Revision: D47988522

fbshipit-source-id: bb4f17faa7f9b31b9d42e45c0ce39b3f5d98f4b3
2023-08-02 07:56:17 -07:00
Luke De Feo
eaf5b4c246 Dont kill flipper server when no clients connect and is dev
Summary: This is quite annoying and causes may un needed reboots of flipper server while developing

Reviewed By: antonk52

Differential Revision: D47949842

fbshipit-source-id: c2f18e16a4933e4209e74f51978cb7d05b80ee11
2023-08-01 10:32:29 -07:00
Lorenzo Blasa
430a42ec7a Send connectivity logs to scuba
Summary:
^

A dashboard to display the logs from a user session will be built next.

Reviewed By: antonk52

Differential Revision: D47944634

fbshipit-source-id: fb9e53981de5abb401c93c47cdec68f72c944b94
2023-08-01 03:45:05 -07:00
Lorenzo Blasa
830ac6eac9 All logs to be emitted
Summary: Error logs were missing, they're now reported.

Reviewed By: antonk52

Differential Revision: D47944591

fbshipit-source-id: a1f5515dded7c2e8955522e12554cd5f520d4c88
2023-08-01 03:45:05 -07:00
Lorenzo Blasa
143fe0e719 Cmd failures should be displayed as errors too
Summary:
Styles are applied depending on entry type. This was an issue when we had 'cmd' as a type too.

So, let's simplify and keep type to denote info, warning, or errors.

Later on we can add a different tag if we want to differentiate between logs, command, others.

Reviewed By: passy

Differential Revision: D47912857

fbshipit-source-id: 213a0768a95f63cbd692ba96f6745ab740346a58
2023-07-31 05:16:54 -07:00
Lorenzo Blasa
f301de64f3 iOSDeviceManager queryDevicesForever converted to async
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47912037

fbshipit-source-id: ac7a9650c82219a21577e6bca7e08d075ae5da15
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
e9bae419a7 iOSDeviceManager getSimulators converted to async
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47911997

fbshipit-source-id: df2cab1986d5ddc7f2bc4e857c76cd178f6a7ccb
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
1f63a25027 idb kill
Summary: Introduce a new command to allow killing idb

Reviewed By: lawrencelomax

Differential Revision: D47911709

fbshipit-source-id: 970f1147a177bbcca0bdfa9e9ba970cdc8a914a3
2023-07-31 03:55:58 -07:00
Lorenzo Blasa
bf96cc2f15 Server notifications using connection troubleshoot notification
Summary: Migrate to new server event which allows troubleshoot

Reviewed By: passy

Differential Revision: D47875977

fbshipit-source-id: 2549bef6ebb26660176747d44e3f535ad9f1d213
2023-07-28 13:04:46 -07:00
Lorenzo Blasa
0ab1aeee78 ClientQuery optional for commands
Summary:
Some commands are run without a ClientQuery i.e. fetching devices.

Nevertheless, this can be provide insights when problems take place.

Reviewed By: antonk52

Differential Revision: D47795358

fbshipit-source-id: 0b7dc34475ae061f1b72843a087a798d305ed1c8
2023-07-26 08:16:47 -07:00
Andrey Goncharov
9ef69bdbad Downgrade metro connection error
Reviewed By: passy

Differential Revision: D47515502

fbshipit-source-id: aa05e9f62b661989187f0340cf06eaa7dbaac379
2023-07-17 08:38:50 -07:00
Sanjaiyan Parthipan
7cef8286f9 Concurrent Function Upgrade for Enhanced Performance (#4918)
Summary:
Republishing sanjaiyan-dev's PR https://github.com/facebook/flipper/pull/4889 running `git rebase` because of a conflict.

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

Reviewed By: lblasa

Differential Revision: D47294545

Pulled By: passy

fbshipit-source-id: 74904ec6179ed5a3bab6f9b701c3cd769ecad3bf
2023-07-17 04:43:14 -07:00
Lorenzo Blasa
f404827c69 Exit if proxy fails
Summary:
If the proxy fails, exit.

The proxy server is the one listening on the supplied TCP port, used by PWA.

If it has failed, then quit the process.

Reviewed By: aigoncharov

Differential Revision: D47433631

fbshipit-source-id: 55750db5bf3e00876074a6b403747ec07718878c
2023-07-13 03:59:58 -07:00
Lorenzo Blasa
0e01fcad44 Android container utility integration
Summary: Report commands as executed by the android container utility.

Reviewed By: antonk52

Differential Revision: D47340410

fbshipit-source-id: dc2f80572816c8746e603aae2d721da2c47c3c4e
2023-07-12 03:30:34 -07:00
Lorenzo Blasa
6668420083 Disable stdout for successful device listing
Summary: If it is successful, we rarely care about stdout, which can be quite verbose. So don't use it.

Reviewed By: antonk52

Differential Revision: D47339446

fbshipit-source-id: 66f43d4184e44ed07364a6f33715139e19b2dc1d
2023-07-11 07:21:00 -07:00
Lorenzo Blasa
564d62d8d5 AndroidDevice, transform to async function
Summary: ^

Reviewed By: lawrencelomax

Differential Revision: D47331809

fbshipit-source-id: 819aefd1703cefc24b71216b946ca66bed3f5db1
2023-07-11 04:04:37 -07:00
Lorenzo Blasa
cc0f42be76 Integrate iOS and Android certificate providers with recorder
Summary: Integrate and clean existing logs.

Reviewed By: antonk52

Differential Revision: D47330592

fbshipit-source-id: 7b1c7ebbe5804ccc184edd2583f5cddd598f11e8
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
c15ac08714 Clean AndroidCertificateProvider
Summary: Remove debug logs and add re-format other warn logs to have parity with iOS

Reviewed By: antonk52

Differential Revision: D47330455

fbshipit-source-id: ac8edde2124bbe99d0ea11f46f3b85dd77b96c7b
2023-07-10 05:52:07 -07:00
Lorenzo Blasa
e484867f21 Enable dispatch of events
Summary: To dispatch events, we need a valid instance of FlipperServer. This is the place so enable the recorder with it.

Reviewed By: antonk52

Differential Revision: D47295986

fbshipit-source-id: f2231544c58ba8f76e9102265e10a99520260b0a
2023-07-10 05:52:07 -07:00