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