From 74d0ecac1bad4719d5430f0868cbbd6aec9292f3 Mon Sep 17 00:00:00 2001 From: John Knox Date: Thu, 24 Jan 2019 06:46:49 -0800 Subject: [PATCH] Add FLIPPER_PORTS env var to iOS SDK Summary: Part 2 of changing flipper to use customizable ports: iOS SDK. Still to go: JS app. env var should be of the format: `FLIPPER_PORTS=1111,2222` for insecure port: 1111 and secure port: 2222. Reviewed By: danielbuechele Differential Revision: D13800988 fbshipit-source-id: 3560ba850389964f4b784551b803c45c6524e6f0 --- iOS/FlipperKit/FlipperClient.mm | 5 ++++- iOS/FlipperKit/SKEnvironmentVariables.h | 17 ++++++++++++++ iOS/FlipperKit/SKEnvironmentVariables.m | 30 +++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 iOS/FlipperKit/SKEnvironmentVariables.h create mode 100644 iOS/FlipperKit/SKEnvironmentVariables.m diff --git a/iOS/FlipperKit/FlipperClient.mm b/iOS/FlipperKit/FlipperClient.mm index dd09d7675..199d92a80 100644 --- a/iOS/FlipperKit/FlipperClient.mm +++ b/iOS/FlipperKit/FlipperClient.mm @@ -16,6 +16,7 @@ #include "SKStateUpdateCPPWrapper.h" #import "FlipperDiagnosticsViewController.h" #import "FlipperClient+Testing.h" +#import "SKEnvironmentVariables.h" #if !TARGET_OS_SIMULATOR #import @@ -82,7 +83,9 @@ using WrapperPlugin = facebook::flipper::FlipperCppWrapperPlugin; [privateAppDirectory UTF8String], }, sonarThread.getEventBase(), - connectionThread.getEventBase() + connectionThread.getEventBase(), + [SKEnvironmentVariables getInsecurePort], + [SKEnvironmentVariables getSecurePort] }); _cppClient = facebook::flipper::FlipperClient::instance(); } catch (const std::system_error &e) { diff --git a/iOS/FlipperKit/SKEnvironmentVariables.h b/iOS/FlipperKit/SKEnvironmentVariables.h new file mode 100644 index 000000000..1022c7cfc --- /dev/null +++ b/iOS/FlipperKit/SKEnvironmentVariables.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + */ +#ifdef FB_SONARKIT_ENABLED + +/* + * This class exists to retreive configuration values stored in environment variables. + */ +@interface SKEnvironmentVariables : NSObject + + (int)getInsecurePort; + + (int)getSecurePort; +@end + +#endif diff --git a/iOS/FlipperKit/SKEnvironmentVariables.m b/iOS/FlipperKit/SKEnvironmentVariables.m new file mode 100644 index 000000000..c1b6ae0e9 --- /dev/null +++ b/iOS/FlipperKit/SKEnvironmentVariables.m @@ -0,0 +1,30 @@ +#ifdef FB_SONARKIT_ENABLED + +#import "SKEnvironmentVariables.h" + +static int const DEFAULT_INSECURE_PORT = 8089; +static int const DEFAULT_SECURE_PORT = 8088; + +@implementation SKEnvironmentVariables + ++ (int)getInsecurePort { + NSString *envVar = [self getFlipperPortsVariable]; + return [self extractIntFromPropValue:envVar atIndex:0 withDefault:DEFAULT_INSECURE_PORT]; +} ++ (int)getSecurePort { + NSString *envVar = [self getFlipperPortsVariable]; + return [self extractIntFromPropValue:envVar atIndex:1 withDefault:DEFAULT_SECURE_PORT]; +} ++ (int)extractIntFromPropValue:(NSString *)propValue atIndex:(int)index withDefault:(int)fallback { + NSArray *components = [propValue componentsSeparatedByString:@","]; + NSString *component = [components objectAtIndex:index]; + int envInt = [component intValue]; + return envInt > 0 ? envInt : fallback; +} ++ (NSString *)getFlipperPortsVariable { + NSString *value = NSProcessInfo.processInfo.environment[@"FLIPPER_PORTS"]; + return value; +} +@end + +#endif