From 8062e2c9e50a75b5d3ae2351a0edb9cfdec4c704 Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Thu, 14 Sep 2023 07:04:59 -0700 Subject: [PATCH] Generate auth token Summary: Generate auth token on whenever we load the secure server config, and add more logs. Reviewed By: antonk52 Differential Revision: D49272857 fbshipit-source-id: 1e549a8bfd7926e9a44b9480432e92ee3c0162b2 --- .../certificate-utils.tsx | 2 ++ desktop/flipper-server/src/index.tsx | 30 +++++++++---------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/desktop/flipper-server-core/src/app-connectivity/certificate-exchange/certificate-utils.tsx b/desktop/flipper-server-core/src/app-connectivity/certificate-exchange/certificate-utils.tsx index 4b69cfc58..e75f91240 100644 --- a/desktop/flipper-server-core/src/app-connectivity/certificate-exchange/certificate-utils.tsx +++ b/desktop/flipper-server-core/src/app-connectivity/certificate-exchange/certificate-utils.tsx @@ -82,6 +82,7 @@ export const loadSecureServerConfig = async (): Promise => { await ensureOpenSSLIsAvailable(); await certificateSetup(); + await generateAuthToken(); const [key, cert, ca] = await Promise.all([ fs.readFile(serverKey), @@ -171,6 +172,7 @@ const ensureServerCertExists = async (): Promise => { await checkCertIsValid(serverCert); console.info('Checking certificate was issued by current CA'); await verifyServerCertWasIssuedByCA(); + console.info('Current certificates are valid'); } catch (e) { console.warn('Not all certificates are valid, generating new ones', e); await generateServerCertificate(); diff --git a/desktop/flipper-server/src/index.tsx b/desktop/flipper-server/src/index.tsx index 45e296aac..646b2af3c 100644 --- a/desktop/flipper-server/src/index.tsx +++ b/desktop/flipper-server/src/index.tsx @@ -22,7 +22,6 @@ import {initCompanionEnv} from 'flipper-server-companion'; import { checkPortInUse, getEnvironmentInfo, - hasAuthToken, startFlipperServer, startServer, tracker, @@ -107,7 +106,6 @@ const staticPath = path.join(rootPath, 'static'); async function connectToRunningServer(url: URL) { console.info(`[flipper-server] Obtain connection to existing server.`); - console.info(`[flipper-server] URL: ${url}`); const options = { WebSocket: class WSWithUnixDomainSocketSupport extends WS { constructor(url: string, protocols: string | string[]) { @@ -128,13 +126,11 @@ async function connectToRunningServer(url: URL) { async function shutdown() { console.info('[flipper-server] Attempt to shutdown.'); - let token: string | undefined; - if (await hasAuthToken()) { - token = await getAuthToken(); - } + const token = await getAuthToken(); const searchParams = new URLSearchParams(token ? {token} : {}); const url = new URL(`ws://localhost:${argv.port}?${searchParams}`); + const server = await connectToRunningServer(url); await server.exec('shutdown').catch(() => { /** shutdown will ultimately make this request fail, ignore error. */ @@ -307,31 +303,35 @@ async function start() { async function launch() { console.info('[flipper-server] Launch UI'); - const token = await getAuthToken(); - - console.info('[flipper-server] Token is available: ' + token !== undefined); - - const searchParams = new URLSearchParams({token: token ?? ''}); - const url = new URL(`http://localhost:${argv.port}?${searchParams}`); if (!argv.open) { return; } - const openInBrowser = () => { + const openInBrowser = async () => { + console.info('[flipper-server] Open in browser'); + const token = await getAuthToken(); + + console.info('[flipper-server] Token is available: ' + token !== undefined); + + const searchParams = new URLSearchParams({token: token ?? ''}); + const url = new URL(`http://localhost:${argv.port}?${searchParams}`); + open(url.toString(), {app: {name: open.apps.chrome}}); }; if (argv.bundler) { - openInBrowser(); + await openInBrowser(); } else { const path = await findInstallation(); if (path) { open(path); } else { - openInBrowser(); + await openInBrowser(); } } + + console.info('[flipper-server] Launch UI completed'); } process.on('uncaughtException', (error) => {