From f968c8cefc62632ea16af922641df77849294a58 Mon Sep 17 00:00:00 2001 From: Jamil Date: Mon, 24 Jul 2023 12:59:40 -0700 Subject: [PATCH] Update Apple client with changes from demoable build (#1809) Brings in the changes from the Demoable build so I can start getting feedback from users on. --------- Co-authored-by: Roopesh Chander --- .../Sources/Connlib/CallbackHandler.swift | 25 ++- .../apple/Firezone.xcodeproj/project.pbxproj | 6 + .../AppIcon.appiconset/Contents.json | 22 +-- .../{logo-1024 1.png => appicon-ios-1024.png} | Bin .../AppIcon.appiconset/appicon-mac-128-2x.png | Bin 0 -> 13040 bytes .../AppIcon.appiconset/appicon-mac-128.png | Bin 0 -> 5131 bytes .../AppIcon.appiconset/appicon-mac-16-2x.png | Bin 0 -> 958 bytes .../AppIcon.appiconset/appicon-mac-16.png | Bin 0 -> 432 bytes .../AppIcon.appiconset/appicon-mac-256-2x.png | Bin 0 -> 39788 bytes .../AppIcon.appiconset/appicon-mac-256.png | Bin 0 -> 13050 bytes .../AppIcon.appiconset/appicon-mac-32-2x.png | Bin 0 -> 2114 bytes .../AppIcon.appiconset/appicon-mac-32.png | Bin 0 -> 1006 bytes .../AppIcon.appiconset/appicon-mac-512-2x.png | Bin 0 -> 82468 bytes .../AppIcon.appiconset/appicon-mac-512.png | Bin 0 -> 26822 bytes .../AppIcon.appiconset/logo-1024.png | Bin 25292 -> 0 bytes .../AppIcon.appiconset/logo-128.png | Bin 2795 -> 0 bytes .../AppIcon.appiconset/logo-16.png | Bin 385 -> 0 bytes .../AppIcon.appiconset/logo-256 1.png | Bin 5484 -> 0 bytes .../AppIcon.appiconset/logo-256.png | Bin 5484 -> 0 bytes .../AppIcon.appiconset/logo-32 1.png | Bin 742 -> 0 bytes .../AppIcon.appiconset/logo-32.png | Bin 742 -> 0 bytes .../AppIcon.appiconset/logo-512 1.png | Bin 11531 -> 0 bytes .../AppIcon.appiconset/logo-512.png | Bin 11531 -> 0 bytes .../AppIcon.appiconset/logo-64.png | Bin 1389 -> 0 bytes .../Contents.json | 25 +++ .../logo-main-connected-dark.svg | 5 + .../logo-main-connected-light.svg | 5 + .../Contents.json | 22 +++ .../logo-main-disconnected-dark.svg | 6 + .../logo-main-disconnected-light.svg | 6 + swift/apple/Firezone/Firezone.entitlements | 4 +- .../FirezoneKit/Features/SettingsView.swift | 27 ++- .../Models/DisplayableResources.swift | 65 ++++++++ .../FirezoneKit/Stores/TunnelStore.swift | 38 ++++- .../Sources/FirezoneKit/Views/MenuBar.swift | 155 +++++++++++++++--- .../FirezoneNetworkExtension/Adapter.swift | 128 ++++++--------- .../FirezoneNetworkExtension_iOS.entitlements | 2 - ...irezoneNetworkExtension_macOS.entitlements | 4 - .../NetworkResource.swift | 79 +++++++++ .../PacketTunnelProvider.swift | 7 + 40 files changed, 500 insertions(+), 131 deletions(-) rename swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/{logo-1024 1.png => appicon-ios-1024.png} (100%) create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128-2x.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16-2x.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-256-2x.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-256.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32-2x.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512-2x.png create mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-1024.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-128.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-16.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-256 1.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-256.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32 1.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-512 1.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-512.png delete mode 100644 swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-64.png create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/Contents.json create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-dark.svg create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-light.svg create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/Contents.json create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-dark.svg create mode 100644 swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-light.svg create mode 100644 swift/apple/FirezoneKit/Sources/FirezoneKit/Models/DisplayableResources.swift create mode 100644 swift/apple/FirezoneNetworkExtension/NetworkResource.swift diff --git a/rust/connlib/clients/apple/Sources/Connlib/CallbackHandler.swift b/rust/connlib/clients/apple/Sources/Connlib/CallbackHandler.swift index 4ff9afdda..3d10f012b 100644 --- a/rust/connlib/clients/apple/Sources/Connlib/CallbackHandler.swift +++ b/rust/connlib/clients/apple/Sources/Connlib/CallbackHandler.swift @@ -16,10 +16,13 @@ extension SwiftConnlibError: @unchecked Sendable {} extension SwiftConnlibError: Error {} public protocol CallbackHandlerDelegate: AnyObject { - func onConnect(tunnelAddressIPv4: String, tunnelAddressIPv6: String) + func onSetInterfaceConfig(tunnelAddressIPv4: String, tunnelAddressIPv6: String, dnsAddress: String) + func onTunnelReady() + func onAddRoute(_: String) + func onRemoveRoute(_: String) func onUpdateResources(resourceList: String) - func onDisconnect() - func onError(error: Error, isRecoverable: Bool) + func onDisconnect(error: Error) + func onError(error: Error) } public class CallbackHandler { @@ -28,22 +31,26 @@ public class CallbackHandler { func onSetInterfaceConfig(tunnelAddresses: TunnelAddresses, dnsAddress: RustString) { logger.debug("CallbackHandler.onSetInterfaceConfig: IPv4: \(tunnelAddresses.address4.toString(), privacy: .public), IPv6: \(tunnelAddresses.address6.toString(), privacy: .public), DNS: \(dnsAddress.toString(), privacy: .public)") - // Unimplemented + delegate?.onSetInterfaceConfig( + tunnelAddressIPv4: tunnelAddresses.address4.toString(), + tunnelAddressIPv6: tunnelAddresses.address6.toString(), + dnsAddress: dnsAddress.toString() + ) } func onTunnelReady() { logger.debug("CallbackHandler.onTunnelReady") - // Unimplemented + delegate?.onTunnelReady() } func onAddRoute(route: RustString) { logger.debug("CallbackHandler.onAddRoute: \(route.toString(), privacy: .public)") - // Unimplemented + delegate?.onAddRoute(route.toString()) } func onRemoveRoute(route: RustString) { logger.debug("CallbackHandler.onRemoveRoute: \(route.toString(), privacy: .public)") - // Unimplemented + delegate?.onRemoveRoute(route.toString()) } func onUpdateResources(resourceList: ResourceList) { @@ -54,11 +61,11 @@ public class CallbackHandler { func onDisconnect(error: SwiftConnlibError) { logger.debug("CallbackHandler.onDisconnect: \(error, privacy: .public)") // TODO: convert `error` to `Optional` by checking for `None` case - delegate?.onDisconnect() + delegate?.onDisconnect(error: error) } func onError(error: SwiftConnlibError) { logger.debug("CallbackHandler.onError: \(error, privacy: .public)") - delegate?.onError(error: error, isRecoverable: true) + delegate?.onError(error: error) } } diff --git a/swift/apple/Firezone.xcodeproj/project.pbxproj b/swift/apple/Firezone.xcodeproj/project.pbxproj index ea4a50f21..544d4b937 100644 --- a/swift/apple/Firezone.xcodeproj/project.pbxproj +++ b/swift/apple/Firezone.xcodeproj/project.pbxproj @@ -15,6 +15,8 @@ 05CF1D17290B1FE700CF4755 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05833DFA28F73B070008FAB0 /* PacketTunnelProvider.swift */; }; 05D3BB2128FDE9C000BC3727 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05D3BB1628FDBD8A00BC3727 /* NetworkExtension.framework */; }; 6F68E44C2A588522003C7D08 /* AllConfigs.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */; }; + 6FA39A042A6A7248000F0157 /* NetworkResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FA39A032A6A7248000F0157 /* NetworkResource.swift */; }; + 6FA39A052A6A7248000F0157 /* NetworkResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FA39A032A6A7248000F0157 /* NetworkResource.swift */; }; 6FE454F62A5BFB93006549B1 /* Adapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE454EA2A5BFABA006549B1 /* Adapter.swift */; }; 6FE454F72A5BFB93006549B1 /* Adapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE454EA2A5BFABA006549B1 /* Adapter.swift */; }; 6FE455092A5D110D006549B1 /* CallbackHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE455082A5D110D006549B1 /* CallbackHandler.swift */; }; @@ -97,6 +99,7 @@ 05CF1D03290B1DCD00CF4755 /* FirezoneNetworkExtensionmacOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FirezoneNetworkExtensionmacOS.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 05D3BB1628FDBD8A00BC3727 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = AllConfigs.xcconfig; path = xcconfig/AllConfigs.xcconfig; sourceTree = ""; }; + 6FA39A032A6A7248000F0157 /* NetworkResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResource.swift; sourceTree = ""; }; 6FE454EA2A5BFABA006549B1 /* Adapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Adapter.swift; sourceTree = ""; }; 6FE455082A5D110D006549B1 /* CallbackHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CallbackHandler.swift; path = Connlib/CallbackHandler.swift; sourceTree = ""; }; 6FE4550B2A5D111D006549B1 /* SwiftBridgeCore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SwiftBridgeCore.swift; path = Connlib/Generated/SwiftBridgeCore.swift; sourceTree = ""; }; @@ -156,6 +159,7 @@ 05CF1CDE290B1A9000CF4755 /* FirezoneNetworkExtension_macOS.entitlements */, 05833DFA28F73B070008FAB0 /* PacketTunnelProvider.swift */, 6FE454EA2A5BFABA006549B1 /* Adapter.swift */, + 6FA39A032A6A7248000F0157 /* NetworkResource.swift */, 6FE455082A5D110D006549B1 /* CallbackHandler.swift */, 6FE4550B2A5D111D006549B1 /* SwiftBridgeCore.swift */, 6FE4550E2A5D112C006549B1 /* connlib-apple.swift */, @@ -450,6 +454,7 @@ 6FE4550F2A5D112C006549B1 /* connlib-apple.swift in Sources */, 05CF1D17290B1FE700CF4755 /* PacketTunnelProvider.swift in Sources */, 6FE454F62A5BFB93006549B1 /* Adapter.swift in Sources */, + 6FA39A042A6A7248000F0157 /* NetworkResource.swift in Sources */, 6FE4550C2A5D111E006549B1 /* SwiftBridgeCore.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -462,6 +467,7 @@ 6FE455102A5D112C006549B1 /* connlib-apple.swift in Sources */, 05CF1D16290B1FE700CF4755 /* PacketTunnelProvider.swift in Sources */, 6FE454F72A5BFB93006549B1 /* Adapter.swift in Sources */, + 6FA39A052A6A7248000F0157 /* NetworkResource.swift in Sources */, 6FE4550D2A5D111E006549B1 /* SwiftBridgeCore.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/Contents.json b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/Contents.json index 4e7323fa2..375f89ffb 100644 --- a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,67 +1,67 @@ { "images" : [ { - "filename" : "logo-1024.png", + "filename" : "appicon-ios-1024.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" }, { - "filename" : "logo-16.png", + "filename" : "appicon-mac-16.png", "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { - "filename" : "logo-32.png", + "filename" : "appicon-mac-16-2x.png", "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { - "filename" : "logo-32 1.png", + "filename" : "appicon-mac-32.png", "idiom" : "mac", "scale" : "1x", "size" : "32x32" }, { - "filename" : "logo-64.png", + "filename" : "appicon-mac-32-2x.png", "idiom" : "mac", "scale" : "2x", "size" : "32x32" }, { - "filename" : "logo-128.png", + "filename" : "appicon-mac-128.png", "idiom" : "mac", "scale" : "1x", "size" : "128x128" }, { - "filename" : "logo-256.png", + "filename" : "appicon-mac-128-2x.png", "idiom" : "mac", "scale" : "2x", "size" : "128x128" }, { - "filename" : "logo-256 1.png", + "filename" : "appicon-mac-256.png", "idiom" : "mac", "scale" : "1x", "size" : "256x256" }, { - "filename" : "logo-512.png", + "filename" : "appicon-mac-256-2x.png", "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { - "filename" : "logo-512 1.png", + "filename" : "appicon-mac-512.png", "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { - "filename" : "logo-1024 1.png", + "filename" : "appicon-mac-512-2x.png", "idiom" : "mac", "scale" : "2x", "size" : "512x512" diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-1024 1.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-ios-1024.png similarity index 100% rename from swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-1024 1.png rename to swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-ios-1024.png diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128-2x.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b3beb6a329d3e6e1e3dc26c88ab6c70162a6fd7b GIT binary patch literal 13040 zcmbt*hf@>Z`}HP-P9V}nO6Xt#r1yl5NJpv&p?su?phycPp%>|(^e!F20wU5unjpQS zfKsJ}9w3xozJJ0y@6PV*?(CgR?%wB~d!FZNp0DzhQe+TG+G2h<*ns^y&sRA`a?Ei>25GNHq6#)2{NPS^P3IO5} z57bp2`GIzFsnZ@!X5#P_TE1bwCF4IOF(<9>@Cy2V^JngT5JMO$uBIf^F))Hz418eN0f$mYJpbnMt%=jA z^?LV`sY&15)Ldr$QEuf`u$yUqrAgUP)$r8`es0lB2L@63|JuXHmdbDUcs~gWN?88t zH~i4X$)jroT|I7FQH<}E+Ts|Nwv3V>H$1t2=$^k7fE!z=m74|;etgDNyX^%^XFEPY zc&yLiyPhrYz1Z>kfJ>ZjI|SjA8-~4V78buwd64Bi%yYZBcd_;@>O|h_TSEQNv9jP) zz0;6}sj#Ua&eVjO~cxr)}e&V}&32j}*on4mdWgp>&6c2T$n|4A;so4XRJemT} zUdl{=+*9)K;Oe!(DbeA4Pvb7<+lIZXtrz#@4&~6(4!QWO=Jlc8;Ra0baIf8|%)*Xe zqu;*$Z}6GoHlee3#cSXgb70eO`S)^ueg)QQdJj^m3HSww5DruLAF>m;$q9JeG)_T5 zL1GJyMzf>Kj}YHVN;EKE5{=Bw*S~!E^4D&_pZ4hS#n9@aUBE)EFT!H1_2`9P|NI~J z4OUtlUGH}^J4;))&q9#H<15bjLw~=it@*HFi^Tb-3AhZmq3wC)QaszfLXK@s(A;!B zHKF-utN7l>)0`IkB>O->?WZBZ>B}$p-u1YkjBAk0GYb0dQ1zSc{Z;&8lRPl{%Fd6I z&aWw2t-gA4zs>B?Z_!v;PDJF%`E1W*ezbV@RFcj8-Qv$Ub)NVmDI143V)V{s=34T( z3mU@)0pgi~>ES(1EiElvPXhP5ag|p+`8|;n{z$lmSw{AMw6_OdRjA)S8T6_+-}o1A z6`i<2n#*Dv_+qHssCe!B^8W0^$guHPUqokJD#|ZCywfW``23$+s-VGwtncoxqtpFm z??gIihxje)L}AMpRw~^TKw@mI`Ja35BxKO%T5=QfT2s}Q5&=gWqv_KV6M>H(gs~*V zKZ#NQTYqwL5+&MlGzJyB+4soP62^LH>_%-vZqILc0}M}>$p{Fj#>QfBE%=0NIj=Qa zlj62G^!cm~ERZYA*mZ;G-$DfRg$P1Z(Mz+?H zU9F|#pyha(=X|Euy*g~IhMb=u9TOEM;}j3s;!#MOXew?dUZCJ0H7&lq2ebOdd`(hH z>bFQ`D~#U9sP|~Hs^;4!?@Q*=Ka%QN_0MKMrBOA?!Q??pKNB1tUw6?V;(qxq1}%$x zT?(D=AG%iHr{G@hOXkG~@4vQfUO!ztCwZ z8rY=^{qA$?8~T=LCUaYbLhk6UFS~LeYimf!$}R2Td<0i1Qeejdf+gq70gW6kYk2UQ zlUWcG z*KQ)_pkFYXC%Mm&pMp31mHg%YxB()l<8SwCgxaR3o10sf7JaDk8Hvtcl0Kt+1G>$B zyStIS*U~N*o!TVB7fj~X`wlN@c;=b9<|TqZ8q1SBECTuI7`UyIw-nVjAN*K%8qT}S zqYuA96+teVDdVwF#UP-oZAB72R;doD0a=7`eV9n06>dF}^Z66Oa-~n%N%8bxrN80i z=;-@k21|{imH2qGqW~~*i)JrmhpxWt{rjC-jbj!~`F+0&RVpaY5r@Y7lDKc>q8;Z~ zxKISpw{ljTLYF`pqm__|F${&5mzI`d{FXwH0Ja@Gnx_ z=7^d1qV--&8~iA24=*)seb}Itz#fw#3{!dh;`i7oh=c*~`9s2RqV~fh?cI}S7pMCT zLMkwENonZ?&v88&4us1X-;?dP3PT0FV3lm(1j!Y}7JSr#Um(0ax(ZE#)?qbXGY3^Q zG|0qO{4_lN#`v!zgc6X*w=%22h-b#7>|6)&Q*;8GTU(+kw^SbA_c9~fh0r+O#X7Yr zJI&R(%$+s3PTn5u$CLiAnX9X7>nER`x!J?Dp8?&vLz^pEpMDvDM}g|b$>Uc~6nwTv zhT1+4$#0SIQ>fZxWoL^%;G;KEholLo6@&Q;eN2yBEP^z`&F6%ZBHw9#TM+YFtOqS7592Qt|=E078AtE5SYDOqn!@ABVE zmT(^AV-*hrRqSUcQ^RhxASNI%bkEw}k-=a5SflxTv&xpZ205gO{oM#ycHyUi*1h>3 z>fU{o7e&XVxkJ;-$+figF)i^!EI5F)qRp{)pV=`S(WMcKmzDwr@SPiSX7VoTZWEM51cedwA0BC5< zr9+@<#&Nn?(T@lm9TQjG-e^kh5yED%4r|WboRu?>{9?IBLx{0_n)JT^YU2ga5 zGJ6aV_iW_UVck0G>=&Uk?1$1!Y4}CKPYW+6GBfTz55a=Vj3AO*bW06n?W=9Cx;#8QqF_P<#ue4Gk3WH=g(kfVP?+cGo?Wjx zxXzM8T?AXJu)>CA1jl`;ukZc`cI^+dOxG2_3)y`izx;lDyZ*D3+mlPZJ8#A%jVMWO zN<1BWu!2xfbuUj>7T9}@D zrRP`_Er)R^ib3fGdg!=_lqP&9C<9QuD?7o4b&C;nXozMo?BkIx;a^8PgZk)T3E;y_ z1*0**FZY09Q4e4Q|4DUsb~YrUiSVrTy6Wlv8p(|I4)$634xF)k@w4r{ZDlMdj!jC3 zGBjR7+V>ZtG58IAf_($W>13Qg$EH|80ywFqC`}MC=K>BlefM#``8x1uzwBFLHwsc5^%NcUiHp>ezm8E*mn!zO# zbV+DKaYviYW$I5Yg}P6yG^l!;|9_8HBtTeol7vnHV9@0h2+iQv*4(7z@2#j3JqIRn5&~7= z0K%?-C>lMp4zhtha+p?uH0Tu{)DFpsVma?u;Ra->u&L>afSv5SZW`qLi{{|E57Q)` zN!9I}vGA2*LlHo`!QHgeNVY-X$N{tjarD+G0y;fk1bmy&jv^=N$oUex9X?Izyv?8v zK61)wrU2Q=w$q7?*&W_ot21>ZAMlh1apx?NV88K@s)Vc3JOvAl0^*RHdWQ-(v>ysT zCV>eSh_Ulgjd*}(a-BD#NbU^x|5@Ru5uzc-M^gavkfkhaumULP7_|2tKJvf0^Sh=- znB(tyU^tltx52NeBf(Qp5VL}JvUqDuHn&HShTBH4F%tS9TC>rrHe}ioWNU8u)RIZaW)cd14tVr z)rY6P&BCfG{|Za_C&QX2RzL+_bRx4CT>2lw?kal?gCb#(pbIC(^Wm4^NO`IP1Lm>Y zoQY*`;45|?WZNVxD)%U`Zea8Qkd_a5OX<7{BCb;3DP?8%Kn1<)MFpBow7yCJEy>?7 z8Zu(c^oW8{&KAX>pl)9%K&oQ(`0;UnC#8@-5XypIT5@Sk2J?4mQf))RDS^*fmu|s- z0~oPYV69@K7gv;W!j*U~$6ahPBx)k8oQge~0k%E+St}4w)sGcEF)DZ6)9#qcyFp5E z*$mJKf^TwRox!Ti-HaEEpd=_A`N^#|lMtzG62P&y@5q7pVB#`e424kak`@P<0;ju> zl}}6Uj^J1_xT8@V9h`>^OXg0&>vrZip6eoM$RjCHdQbs2Y*L{R0TFe+ zI6qsX$;N)r^_4A;L-t4jVAi%m>LHigiEq2lP#1@jguVj)_MaN0|Nmx_59x5Q5U2k3rrZlmZogf-_|Z zl7YlUu_&**-0hhd|9bhc$r{cl6GbQPi{+IZ3QS+^$w=*W zrSB$Am7Mh8f#(GDq#O9liS>=J5LEu&cDtEC0kMk$5DOtn=gzuJ^lYndnbm$9b44=N z=`Qvl6&VQl5Sxf~mtPl*Xd|70!J1>Yi7dfgv&mR@<;McZuj`~sqgZ4l3AJ?h(CK3# zB0$BMd{S;}39Q)MsT_iF6X6e-flv@o1-i>Df(1+eeZ7HIZRgrs`&3eCWhcSL2D~lg zq>Ve*P-JeuO!CU{$NC81FeUyMv03xsxMmdsNR<`)fC!$h%#NWrq=V_e_%m>=OKLufgEKS1; zP82_0zjwd*}l6QDeCZz64iSG8Y)hNFFWH z-J#jI(@IDFg*sG7n2d+@f&vs8q;N2QPF{6a0>&nl35dv>$b!PONl#2kuneAmIwNR@ z9mp8q$=X6HLZ!5*`?ScTqqCU?2Q{-I!x9o``^1D{s(_yH;rg(7FvBCBBw0|z-Prq} z*nSWzWf+##8SpFQv*^~PQEfr!Pvmh}z+$OEv_)6E#|^L@)2Co036>Iz2AKYk7*078 z$K)$O#QcJC*b*FEz~*onf#k&gjxh@b`cjO8d+$d4C=r69lK!>(xC>Q-9^JBLWXyHZ z$N-|jtPDurt`JhgXB3_z6zy;}y@H(r27YLJ{Zle3;v%p@GV*W`s(teM6bS!I6*9%F56m^%)w9vy4FBkmyGI29 ztkkgc6qF(}mLY_XMhHN>1TVj=`_$Uxwq>EK~3B<-+o14(X z9CU$ZZ|Dz$z-b_f;=3J^*uy0YauD|wqWsc;w%wJD9M~RW5NIbBUS1`{A0)#C$VNSR zk}`nM`EjWY=?GnH?iM-SwUoZ1hAFR#;5ex5@p2U#I6R)0YM-@ayk|}*+7Qj*gizXqKz)S>9#Eqfy4hV9W9hkZ5P9x+Q zM#SfbFfV0t%$S1@L1MuH_aZiV^8vrMKAko}vqBP>U+Ttfds(qSK=CytJF7UKh3Dob zHD)nw9wOv(iW6QRG@7L7#5yBbq0u_?DilCl6}XtQK*aVtLzp&Cl3^ctQY~KVw07pe zc5(xNi~wX!GEg&vCZJAm4Xy%IOEHM)oiNjnLXPI4y=#@SsUa>YS&S@ zJB9Qm>khdnBPo=K(}w16?^=d7f+jk`$e&P=-c}KM2U-~b2}xg=Q<0-QoSM*wnI)UQ zS@L*5A57wNWi|Aa0}|Lw7t4FOkN`KsD9$V7WH47K8#oH3TFQp)1=+)Vz@^5*Whp;G z8!r9RU4tCzH#av71C(bg(%mr&74mfTRW)iHBwzAnD-if*I~pY*)xZck!H{zvk$HZ2 zBtb}5MG(o>L2$Y`iG^*>C08BE-uu;ulWqpT-UkGpvWYYuuiwm9+qy->H5T*owF!|) z@#nE@dc(1c*S@bRmwOX^PjHLF`9V@7fifU%)y8ZYkD+SnVmcrm{S#+i?w&1E>1$(K zd}6%Z`>hc8V@RP$QI-P78p`@ku}dw-eV+WDTIJRL1H~u_dg)9~3=Cw_$+g=xy1_~< zo@?-GDA#qUNZ~j@@*@A&(Uaelzs^P&LN0BSsp2ZzEndb$+lpO7TmbB&^bvJnq^s8I zp>+4X+v1w+Mw3h|+kSC1-hV*f|*iV!o$BEEf<0>;T}xh_{o^q}7$Di^jHIA5ua~&OKn@_U9K8*957|p6iG7 zDrDWfeVYhqGM%g=j09=T4?HiHN}!=eh{CTCmst~~}CCTFs0 zjt^oPhxG$hsuIz9E=DaH&t&)r2rLiW;J2*kVepXeE*uwpeZRG>0CU-P7i0N`) zZV$tJ9S!MN-AsuvcatbIR_W%Fy&$_oC!IEnxyU02DiP_NYB;)ME~J{8mS=ybn@&yU z3r@hCl-8ROX=xIsLV|?AH;M|jle-ZV@wcwuy|w)8UA*74{{0GWI8@KZLme?WVKHr@ z-r*5aaLIZE{GF@~UNHJ7pqf^PT_IFaKbK%6EE<4NRaZa@;&3JmF*@KjP;frq|LRQ= z#XH#>Le3*%oPvqlhXZ+I@t0#!!FiKn4@0;Px#N*6P!;`23UW*K~_H{#Mvo$M>6!0Ea_`lV(5#%ZYa}#uv^Z2vZ4$ zvweQrB64SJm+eUHmJ zF(4sYwb*(VqU<@k)Q zo-0Yp{<1yce-i?V|BV~1Z)G8k$n88H2+g=jG3&iqR!CafTJmpBoX*yrmONO>x||$%B)5dl`uA$CBCQeh zxs+T>jyLnBGaQDxKK))>Z|3;`s8pa1ZL>Y{-r<8Xj1Jd3mR!%xhN!uZa6ENf@a(|t zEN}(-cf_M-aRdL_d>1bk=uG9X-{|h4iG1<-!-v$h)V_Mi!?75oF|=H4gbKxsgu$Bz zJr04}+lzq?dFRS4W`yk|b`j@`eMKuEa*meNnI<5y!)b3#0`Zexp7m#MW<;XW4A%|h zH=jmg`3P^h8fC_D{%NUH0A4C?W(`w6v+k~A>mZ5T7U#=^{1HSN_)xo$>@ie}TSl!y zo&s*5ikA6_k016U$|gLKxa*ToC6-%55-o_Oh3gd3Rj-=Pz_l#wGw^9H1>?+iyW)Lq zIpdH!O!Ee?a7~l~&44h)$f>tFz>k{CR#H-FroE+)56kcemZJ}8acSQ<$?T_pNpZG2mivq6tv#o zZr^xxr-QQG&mKlS3Pi@ZvqApcy;}xv7ei%$J;5*0d!7=6k&Mw|U&cRb$Zxgg$K=}= zZuOC`(+3E{o*M9Mojs7Fo;}(J}NY?cbgG6P=l-%~j9ayREkU8F-u3Qz{55osxU zbm8+&G>i(deGw2mYn0!4AuedX>Z%Y-04~gi|5SXxqv`svxv8m1BvW_F+s9|uEYt(l z+_8wkZ-trhvxyi6;ou=Av69Q*Zy8icx&ZZjG^hc@w{i`RJLSVsn$X(dCqcyvqB#*~ z2Q(s0JL_{0(kTSXcq);yhf5u5=Tf!J7~Kcjas!RFJ)1JkEF%^2Ft zke5~00PU+&K(=VjmloLjO^zMKTKt$mb&z;1v53AOPw0eW@6o7W!;9b&)XQZ*Cx_Z! z4(|8*Uw>^~zjs(>-H+gW71oP_bJDVJegw!kNI#U4o2z=FnnCOlDre*XeQc=i{i)dy zy~|?ojz!?e%GTvT=EX9pe!Dhbk<+|*46<;DSSlPqf%lGmWn0vBVYf_`t#a^@>{n)IBRlNGb*fOx zlv=I}?%jjbb7KB$@*KlU?Zk-mPYL!c`b#3j^^6&{VrTdiM4`%i>LH_?@p1SP5}$91 zp~2VRLVT50XTpq5$=!&S0^0VKm}W$%MHs>&NhUZcTmwVm7ej&lGr7h6T9uc}QJaaK z;)#fiT*h#_IlIdGzAFh@l1OD@3FWgBS;|M?4^Lm6{jJ9^b~jGY=D{`Uj6Cz~G?F?P z^P6EyJf2IAc0nAc5@8ZWT?+Y($R3)UK3Qp^L-nWdm(#Elj>Zj^`5Ikaj)nF?;fV#G zDcwgt7h(T>oVxct2h_JQ-)I-V={#>a;W4sTs4>HUws)>;*k5Khsu0%o69+L&v>xd; z1-pV;@k4wiJULV}AfzB7i#-HmrYfZ35#O0!0)qsRKaru{vzy!PQ|LuP6Op48{gR2&{ zvu1+#dwP1ZT3cI3#hKy1(r#O!On!V?+c-8-RkrZS7yw)(WH9{4)6La{r?= z0uDfq?-vQntPOS$)MX2uDTB(BD!8uaV_{Q)&I zm~j<&@%xKQ*qp+5O6&Wz>KTHM{(M@Rcq`uRb19Idi#!1(0pU+E)JLrK1X15MIyCLAs=ioUHvXYKk)B20%fQLS+)LF~UtrVg_3EWF#Zi zg|4WD2ZfsYfX5yWR@0iw-#mGQg0hfm2o$^no0F@g^WR~5GjD#{=a#Q}%>FKh|rz1eM<(ELgq}h=E$C>r5RaI`U=_@%U zgY%9Up*1;HAP9plqqEQ(*=$LT;a4S(#sF)+$v;6GcfkAaNEK6s&wwLWV<-7EF?*~( z@aC2kXkxdm2wy@^_G>Rc$Sq3R=(ffxUKNUw@Gf^5kA&SAiN7*P{yWj4w#@)@yDpM1a)PTJu72kok_p)I(VVctD zgYneb{_q>zurKZl1z%bkj1ot+#*F57pHx;AD>-R$v7x&%G!NGD-)~kp<-F+8b=~v2 z(^-XhL{#uWT-fK^6Pe#k%JlVWA2$q56N!Ja4J$VYHrwds6lWuKe0=P^Lc*%2A0MBr z%{P+_4K*Z%gAGkgyqH^*#Gn8A%K7r0AkjJT*6(=IJeiVpGc)AXj0aI4dw!SM%Ru%I zME|iam)uKr_K;9R2yyIjcTx{t%YpjR^iwt8BM3VrdjVoe;?l8KigumhlE+v7jEXf& z5QOc|4SigmdGwG%c)-cFe+;wB%ZrlHr3!r1gZ8kU&TPs)BY?_$!zSOnEBkCA0M}CT zKM6@@G4Sx7F=0G6H`j`!peJ85Ta|F2a6>4GJJN>_D+$C=R4W9Yid_I(-E?q@v%)V2 zlybwOv6{tNJN>9awmCwZ+H359*j^ zu8;2PB}@7M=QUSh$fx9ywV@E;Q^t`-(!H?%Hg7GS_GCNKH@_!#0?_!e(6;++OFH>7 zpXa9~%QfH-j4`}M-^=<%uk|soTm&$zKTZMx1@t0@*^rhkv zpmCyb?c%ENPcK`##E9zGqhGWQlqgSG_ULEGZ}8s)wW87U6(#(yL${lpcPVDu&+x0F zm@^q?-lO~8#MH}~fawS&ZIwZ1!y(v#FI27>pKk&n+ScK3$gCmuzl6sibD z&P55Qp`1mc-f=r7Aq5?L_x^C{!2Wdsg*qT6>-CN_m6um<6wsE|{<>0WT1ESOq4_NT z4V)r#Az#w*J;>0B@~51}CT5OrQclGM6hZ}H>Fqonbu-2JHSX&>16I_sxaPyF_#zU_ zqfoKXKMP#$p^vT@>tj}~E(s#Ha*&_vz!XFPxjB|Z|z3AncM9do$H8m-ONP`eJ zZTgB<-NPPTA77cqi19*r9ck5x^x43`K#wTvx^t-D+@@=uG@*zV8H7=&;cC+KHP=7O zYxA-2fcBY>4n}wbYLZFBX00O_?g_=-zXIM#%O|~j2jXL6W8>k2^74`J5Cv$$&q(Mk z{Ve66bEpoiGR=Md%O%3~!oYYLS1et4D@c*kAZq~;pNuJe4uvLE6B#b!29t8ltlR0=pzEQ1tM&DOh3W0r0T61au~xVkS1J@L2Fku!Ae;7Y{$ zCHc;UgANZc2ypAu^?c`+9}Uq3IV!mbYY!#a&{M?prwT6WtD;JXZVB-4(Z90%tG0jc zp@FvFmU$-;A&^Fw@lw0K=96=W$93rirkGMk0W656VlhcVOphh6$WS{pJS5B?0-^*( zOL`#-Me>VjI3w{6rTzh>cDQN5#@2m)rzvb z*q%i#t^nbS-^9|++;gsqtDMu~$d((L+b{ zZ+y7V(#N0RNixRB77o!(kzq^@QBFy*vKouu?1l!e=lWhzel+2yU;^?ciSbGI`d_1F zWk4t!hKv38#3`XX>|qk_4rLja9K@t&cRKIdSSHx;B{4MU4Y)AG3U>0(Y#A*&PDR$@ zTTBo6=wD=zFy5{%+4*}^*?4unWza}OMNa<10!vC&ZI#Hydkw!{{^m_oJh(5lVWZvv z!wHU?1zaS9sL5qrzF6(7r}w7{Hv&S9WT@mD%B*+9f-g>AnV6WQG#627KPcDXqwypu zR5>1n{(c~{n}T1&TpJO+Oe;i(Qy}{4;>=w6Vy~-dqj4t$DCk)nh|iY{dFOKB;@noV z^;YlL=|?FD;5|NV`Kzn)O~uHHiHnG1cQbWe?_upr_o$P=h73(7b8dpfU%gC>mWGFe z4%Qm3c759dRyM0@gR}D7w~kZd3I<6yYy{$C%6WIh?(4w!SFLKjjt)r7kgeG=RDF+h0TYD)5akq8GPK$lQFR9sIhpREOqW6 zlYY6Ghc@Fjb7U_jIAzKI1<{Q~^_OO~J^h)*FJ5FQ#N>Rs@)>qw6H`cl0KDiO=$6=1jT@O@g-!Oi9 zCuRhGAL?ZoMg9jK?nSy_8f>TJ0vS$O^W;AxubFEJz~BDVHJ1iwC)wDk7`-OCm-3ri z8ynB&UW!&K$e+3;s#riZ-w7r-8mylyX4hG< zV(SctI`HgN*@SoX0r5F`g(7J06sxve`MsJ%#FgKzq>rSK)PCBB}PXyVP9djZ(sE7-akI(1@7dpseG0kpUT+3 zb;uhdm6Rdil<1Kqhlz}OpnzrYR?Bzk5vsjRKELp*4!>bSLIz&s^7Ap(Ij2Ou93ac0lHlLwc=9X&#`{5pdSIddCN{G z0|a4DQNJc@y!7YyEeXQ|@@0cKCH!}(fkB$dDXD)!>tEAr9;a?7S@xH;#2PaV3-|!!AG@Fw8sC*>c(FOEiPaC+wbDJ!mR)-yDE@{4P#NDd=R>& znednAC^kh7R%jll_z_(V(n%ae7-U0^?CoG3AD(TeC_5#LBA%)VveU@24Exrc#Vu~( zPGv3@78a_#e%_bx!z}xIAdvbsUVm^Ol-%@BS_l2*^DbAL&4zJg)=}Q~L>482J@P+$ zH(Teo5WL?L@@J)ol?K_Vq4U;NK_Zrf`r0=*rMIrA;t5kfJ<osTNnS@{lmQvUxuIc68ak) ztB21Uud53*->3Ex!CR&`Fe?q4BLd5RFga9iTPHML8 zr*}f$a^XjZD;-5^!}TX<<*}!n58p$RaKak2N*USTM!VRt@dmkx)Hvno-Sv+b=k{s~ z8}7F?0WqJyN#b-0^wE1Ed}891yg~|*$1C;mN$9eH1eH7O9zW^9+^TC})i~PA@#7Oe z-~-orTt(LLSdu^XohCHvG2MzVfNU7XF;|mx#`^P?QW^Vn z*YwJh^|h~ggY_(GHAEY>$y89^$Di0`#&6RL4rAAfCOJJ9ZT07g{1KVn#e$#$+l<1f zTP;S1PoAIJm@cwy+T4%ldXxj8n!^Mw#Aen&a^8m4-wQG9H4@|V%NoW?s?ye)sqHE3 za+baD9Thu{x9wMXZHMA%?uYKU7X8hLqsM6EvDEzf8=UXLGV?ifYL?IwAYYp8&=gns z9G5Qq3i@>MYwzIGx#;w8;4~&&2B0nyZD-}_o~|Db-Z-JMt&J7;6h>5!hhJ#Z7MQ;+Fvt{BU(qx zHd;O{I#9lB5xm#M5AFKcaD1h_*gAL)I#Fs36Ap_SwJ}gidAJte)wVi(a@9OPLm2kH zI*}(>DXwSK=i;rso|FY~p6#mDcml@IpX&CiwJpVW*i;H@!L+IULnCjK78RpA*I5TG|G@5r@BTEhN;{S>fby zCkyV|*SRg%?7fKrL%h%3%WVCaoo{x14p|RhaPt~P3lFbXZpf-^8~~B8wWyk=5D)O! zqeQ)c3v$a3U$Fi(Mqkt3#wy=A*t1vKR(2w?gp4J1OpnK&(vqdMU%*V1MU?xQl1CSz z9+SxL5w>_J=Vu#ucYE3|SArl(@E+8bfSyF`>~WyQtczPj-2$SNW)>FrKc3EfrE|1u zJn=rf?4%ySTdx1dHBL6|p7Zqr^Fv++x02CJ+tzh|?{UuS%eGGZ5yn{VD(ZAQt7Ku3 zNZKsC2M6tmK5cPw?>j`Zq45sEzMSoW+1(SwI9oyvzu5Mh&5fDxLA4ZK$;{&qetOB) zbjeR({KL{iqb7z4zPGk=thf9~Al9@Y>sj6lhyC87X)QxK|9N{Ihvpr6CD!=d{e0%k z7d7ti+m!fT<|)nh3XPVxV;KjOS54b@?U3ZTq4h##l`4>a`E JYgAF8{|5mne1ZS~ literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-128.png new file mode 100644 index 0000000000000000000000000000000000000000..866c74472e8ed1339078e998bcbab78a6d1254e6 GIT binary patch literal 5131 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 literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16-2x.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..95680eee52fe98a4fd31ab1998c64a695228f55a GIT binary patch literal 958 zcmV;v13~ zsD$}2dzm)E0@JoRafwCy;qY$Goxa~Yr+3@k-E7-aec*7;x#xS%_jAto$Nd8Q>ySw; zGR9;G>Ot5`$ZyHwvqyw_Oz}nhcw^FGbgc2eU2%N5}s(P24%LQv>?@Lf(R8&;-3iS#J$P2YO<3c%Q zNQc#G6(^8xpPeE)Ig%HNP$(o5BTz8pdIPLakL8qeI2_x1k^_sy0);}ZH^PS7At@7& z$5UQeF2?F_A=_<)xNlZkCM}T_)dcMKQcjulj96R(OY-})Btc_6at=f@NU!pkbM z9b|j^5<&q#OifO}D)zHqoS@NFLX+tbbY1Pi-kh;VZfJ%DcOnneHYV1cZ-yYE)WgwJ zXZbm$dyeBo{Y`-jUa9~2SEqyZUBAdIHNd($%xv`8V9Gl8`8|7myPMr?0T%ZEWWT)g zZ0unl^Sb7@WjJmDbt$(<3kc+lf=0Y`-@qV@ew+ubP7nPzuE4qD`(f<)P~rv$te~$y z$d4aiJ_5r%C&9Dq2gBZd+e$DDMf1Q;oRAKD^x^|gh9D$jK63$%o$rAfG{L&T40X+^ zrXmvv{Y`jlB|gu0g+j3hc8Di;Z=v#GbXGV2GW1fuMGsh7+M#zKwZK9%EUMM&1{|&z zjX)AplQwYJ6A8%D+75@2Ksty(TU%QLzCs3pGAtS=uo`ZK5+V|b*s&}-fx``&3!O0T zbUN=qiLtV>GD5ntt?!zfn|n~IvfSlz-6tJFg&Cn&U0tmiA0NMFG#b0mS?Zt&h(@D} zcDwyvXJ_XtoUTd|*hCpI)#-HQ!C(-yTCEHVN$RPf^N*O_>VOF0YE!RpP{_EV*mgE07*qoM6N<$g3&OzNdN!< literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-16.png new file mode 100644 index 0000000000000000000000000000000000000000..4dadc7ec97b00cc6f1a6ce7b797672ad6e5e3773 GIT binary patch literal 432 zcmV;h0Z;ykP)j|T59j~x8SVuJR4OP4A-wClC7O#&Ln@`D(`kj~RtWG- zp64C*GDjdSj^k!&HaWjRZx&c)V!y@Dbk^V2ueqQBhKSKgKmu{-N4Y$lOKAWALwx~= z(ZDr%Z0WV2ZwJ*2AYjwp&< a3`0LMOW&S`JRfI|L=0yr%4 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 literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-256.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-256.png new file mode 100644 index 0000000000000000000000000000000000000000..157cc8ec4d1db1d7d214f51fcd41b87abdffcfee GIT binary patch literal 13050 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 literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32-2x.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc6da72ecc2fde7655d8dd71d2c727bbbbdae13 GIT binary patch literal 2114 zcmV-I2)*}-P)9^HC%kT$dri}*bR#6sZ82VnrGEX`?YUtwOaqd{I&l6{>sS6$bSU} zdCUm62=D6ZS~@m1R$;MNIDbq-Lqo+h#=N{dwYzk=lmKDIR09J8Sz4`jKNf|9pJQZX zr zR|)OHdq{>;b#Nvhs)mM!Wr!vSP@n{x>g(&*u3WkDhMb3x<&M#4oE0A*e*gj)NVF~? zA>oUS8#m69Ya_=1)#1a34XF38L4YGTIQZ$^yLU(0yJrzh2B7Y%;^N{q!efH8w6xb% zGVVZ*0qT&Dkd-ivu->i#UjeaW2Uu-R-8Nl8iW zF@S(BM9~_-7YIr;!szeEf$Qx6rBJKYI+Mx7G=#DYK(0+I6V%}`pwfoH$dyx|6eQJh z^f)lUn-$fgg8GSMu+*LhZrBV;Ks2?tx3k~DDr{?OBe9uwMyRx*Jn^=U8=w@iv9Zi@ zCIc2PUJTQ%0)$!73H;U4qTD0MO{m+;#_0str`!;ekFdb+m#v5CWmVbAz_d@c>AT@qjio9L^nj14fV$-T(t3_m{)| zU<0JlpBg2AKvHn+r(*CWWFx`phSc|~W5y%GkpUC5UaJIOg1Ig34-#M%#GmwEv;ln` zEnc7bc(fSu2MG`jpjucDbltoTO5o9A$REHB5Aat}{2MQyqr$Mwv*}x4Q|5NJnIY~5sUl(~ z#Gj%;P3Yv)c~Xx)QW4D(*tKhiY=53E??doZxXS*t_3rIkZlBElb@?K9;N2ZuauiHT zTc2CSm7Y4`Rv&!_pW)1%x4GQ)z^6lL;SOz%y`tx?{(9DFpLj}KO*AnX!zz^96ZAy4 zSK~|{ICcU`uiV0!e>gKF75P~^;pKG(IREWePWuR6|0)c3KU7BwhD2Q_{CTDjG+{dU zv8)Uw%P8BAu+#1STELeerm+}7>f(wKvylO_ErXNF%0Al36JCjWUtYKu)@JOPc#jJ( zRltEOf(_7`&E|`EKDZuyj1IIPZ)c?P43HuwUJq~XeIGVwI_h!pp43S*FG3fihmf_~ zdE!~mi5MChs!mKyOhw~9WM4Ps`vElA(ksopR1nc3oJqt>IVX8yrJ($}w~oMtGsUn0 z4Xi83ZHO=nkpUr1O-;YyscH&5LXb2R9X$va7%Cu21nIUY-XsN`&DYTz=%BW-6-tg5 z!q#1Tu$}YoIGjmD}Iw0!TduT`7u`+6lU+vd_P}$R~G*Ckzh{*AY#uI)_M*j9^kyk`050I-O1j(*a_{ zruZF`+@=!r^z_s%Sg^p_($eBk$BYA3tXN?!C@44$j|r-(s{W{{sj;!@m^OgaAR;0{ zcjwNXpXbb(vkn3nIQ!p6MMdqzTN5yXA*KY78pOrL4Hgv@WuyP>hX6)NNy!m|!9d2( zvkj4qj0{VDettd11D`;E0(Ji5?Ck9NZQHhufu|rfNKQ@;#@ndI#>P*l@*7`YBpNf0 zJzAha7AhA^Aa&579avCXTf1-R(xvZ!pTlaknlXs`EF~qS5H~@3nwy(PLCFsk!gqrj zyp77q$w@`SSmv*@jt1{4jS3HEV)eTU)ibQKHMr%37YDo}LmN z9i2FT{`>^F-&y2-gK;__#xFMZbz<4r*qE78Z*Om1Zf@=m<>lq=81bMTNz! z_kjlxmdZhk7A?|rcXw-Xtw3B3!bpqnN2}F}eM*T?Vf{p2XhYE%$d!qCu}qqmLTEpR zVeT-t8HtRH9IdOXBf^XUA0fZ_u3-i8VE_OC07*qoM6N<$f)tMRA^-pY literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-32.png new file mode 100644 index 0000000000000000000000000000000000000000..70b0ce692b288a45dfca1f3927ac7eb6692d5d1b GIT binary patch literal 1006 zcmV$Xufi{+9XHpT6Zf$Kjv9EyK!0q*V8_Ubfe})Gb@hobu&*A126-7lw-Qoc; z0VY2`zXLJ=;RAaSYsFY#5)wdUr2U5Vd0G;5kFl|_gal~1rA*6oU|2P5P7bG)LjsaG z0y>=zG6lny!nVtnQYIJ-MkyH~V6&zEa4(P)mO{|$NG%gn$QZ~X$ghR8GPJNl&Ir%| zlq*upV3`)XTTFmJh6r+AkmM_2@vA+l40VCn-BDQp8539lMqLB0Nej5KB?7fTeSLj= z7Gwi70BI(0-(5mWg2Y*njWnb&AT6l@_a_S!DA=TOQ&UqUjzF?B3@mft^|)cLSmrl` z7&uT;85#3?-LSsG3C}bO#LCK&Eo6E73Icu(Camva1$)OAJ1A5Kpr-y9v|sDOUK{rf zqppQnSEvq@REOs6Z_Kcs$HMWm=Y@A#ZF!zg7;iG1@ZfPwlC^2Ojr82OLUhGI+Rtdo z&@)riJpcI}d2Q5_+s#0Jb3XFJ<0Qk6dWh$nb61AvXK}B*2x$?4v{_J%TK7CK!O%x1 zC{--n?e2sNClAB$3v)<=Bdx$z9u=OSTy28>t~PKla-c5XJ>zH^CaeSd2|~Ky z8458G?YRy(aj6T6(FL1oEtJ(pyNbF%9B*Q+^UypqGMVfU>=RG#-@(oMF<4!KWvHdR zb8gTzw}4@XWEkj%xq^ZM4L)wh5|HAZ?E_v$o8d1pVYPs5JXC;mr&^#93B+P;ZOy9J z>rW334sOTJNtTwD?xhOCY&3_%aZ{|gRLnr5(M&fqG+dTSr7Fk)sQK&a>aL@!`D8MT z$z*C;U0t2ew&rO1xxT(W9mHf?qSTWr6pDkRqobWwRaF-;V9Fo^ptAFRzkhsSVBn#_ zV4x*6n2tagGQ2{|eLi0v{-{VWKmmKeUZ~?LRme->dt~Sjjzr|bV|dfvz}TWDr$LwT ck^k@E4<+POuKCq=0{{R307*qoM6N<$f?WE&Y5)KL literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512-2x.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e6990764633af0ba1b67a61141d07712d2107c03 GIT binary patch literal 82468 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

P82A#g1!7aQt~$A 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 literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/appicon-mac-512.png new file mode 100644 index 0000000000000000000000000000000000000000..3cef30a09c4153a3f5f28d6f17cc44132c956069 GIT binary patch literal 26822 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 literal 0 HcmV?d00001 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-1024.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-1024.png deleted file mode 100644 index 692b2a8453891fb20bd3455debf868fe54c90863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25292 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

2$2_vth2Qy|mqJRn_Kk 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 diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-16.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-16.png deleted file mode 100644 index 711e8b4645b4cdbb46ece58b43589a30be9d2870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 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 KQkjlZ*uMbOrt?4m diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-256.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-256.png deleted file mode 100644 index 9acc8eb69c55c0bc6383d39294e8de450fb91d39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5484 zcmcgwc|25K|35RvkiBn06e=PTzLpl-AcQO-WgDbq=bJ=B&Da&9kS$BfQr42PjUhF% zZeLi;ZM76v+?tn26k)Ir?QHqi#)eFEp6 zGb;dxVTPBqt%6|7>!*~9GIV{z$5s+i@|VTI=A;M2vXu4 zFc0|7amb*;NT-&aeOQtKDp_{Kfm5ViL&eRumg@-(Ze`55)8SqRL4{6`5T6je$=`MA zOQQCDc5vgQI#=TQGqa8qF?G+xV{kAaEr$F~3AH4#{Cx>D3a3QD^76!WL%sMwMO&PF zS=!bGIYC$HL~b~+P9J{g_^sPh+HZMW?8uu~fV<{uJr6^aiH^@uk%^*^$5rlJy#Lj2 zWS3n(8kEc6TcbzW0~ktPTmu10lq%~mpojCaAPg*#7Gdmo+$NOdsUzEb_3Ope;&sPh zDt9;$!fX+og>D>TYvC3)0F6dU?>Z2Ok7se?Veuz{Q@(9vV`CL>f{1byz@?1%WI9qk ziS-x3w?-lq%mS~ITeP0Qo27F3DZo`N9){11xVy3lYlBAH!*12*{9!!0q2l zK=EyrF0MY^3>b`l%Oar%b+5X@Bb-rpA-wtNI3t6I6p=!GIQ0kBPei|U;f-yin4>H)ssVgDW-{e9tCgJ~p675U8o zkrBL5aDs$Gb%_E=jT0c?@F zxb6Q4*_OD?u8XVwZ-=8jbow}O`Yfv`vYFD3?1d&!*lZKx{{M7eLL{L-{l~e4C_vs< zg>WSpJ^`Gn9`^=q(5{vrYLjWz?}r_OO{KDk0FpZ*b?O+ojg%v9U9Pv zDV&Aw^FW%${!kq4^sG4VS}{^D_tgspH3x{rhUku*3ywZ5NR_hbrCQ)|^*%^Mm#)*>BnK5+xQt z<_KD8?<(O!&o19_K8U)D|I{%pd=Hur;x$|cUh*jYt&U=kfQU1Fu8SJ+Egok{TUKHC z$Ri}!LyOVgjR6pfLxCLTBPY+Wtl0Kh(yDYO*ETZammus?t*3IOm%zo@K$D&Aj?w7O zZr)|pv(UR{DG!2(@dm&3kKI{Agysbdw6!i>`KrM#F=dE4mNnk5IY$$Q?JpOq)`~E$ zNCWgks1$JA#)gyhSC(@QehP;q9ki=^fwb#An<<$^P=L`nQmEU8#qGCxLF|F zx~z>uO5n4e7V=D62tk#r23ip+&%NMAm2Bb&V4f&piTmd%JfW{Ty89qN9skP&Mihd( zv6ySjb!Vxbg`^fQp^H1B7zO4|s*gL23ZkHG<2@%%ah54*G%b2t07&bPwBRD&IvX5; ze~;0{0|@SAWmciW-PIcbS~5^CtvYd1ra}m&&^QhbLlo-dIp7ps0n+RcNP)P}v7Q4+ zd%MX)hany%(qS>R2QE)zO+i^4z#X1KvrVYV(s&xHrRrNs$o#P% z?Duh0oC^2{15$W+yl*4GZw1VSfm8zr_|d=wrh0TO6OsYP`&D?%c|?pFBS)jKxjF)% z`XBpq-56VEE^`Wqr1Al2`>`XqB3V$yz$PBSWv~O~tfF%;$(rBcC&Uvghb(aigTb8% z&6`t;_TTr{eQ?|n+<7bTQtu#NgrpfZT;k!-&nFqwDfJ^Y^@v zC@5M=ktNRX1+&Y)1V|%5hEei5p^IVsH_N0g%zWQ0ZHZ$kOvsdg*5lo)7+_eyv;z0M z_aEgilOy(`uX5m6&VVOz0A>01GxzxgZi0g`CN6g0?7j8!yQ7^vcz%WXICdHfeJQGo z)OPpE@ugdQ;tLB}5XZUFQhOv$4ilzi4fy&4p4*{}<37Q~ve*eEvKW=6Ac)czL#^CQ zfA&*b3A5m;p^H!MVl}qVsEUCYAh8IU`JF@Ec)p&#~!Q@n$HFk;^j)XSvww1mGRi=}OmJDB#L znUA{aAGofJ@hDLT)vnArI52kAR(@|iB9}Icds+B;$x~Eel6Xe({5m1(Y&7$Je{vLI z`&snPXP@AzG_AuQZ*LkuLv*ONmw(S!@Tj|k++ zXkTT$mOFKHYOGHP&+ua_mZJAa@rBJC{v&|a!24+9eP7kD zje04@YiyOTQSAqS$wXCFH)$k)_@?(8D`Moo;^g8asFEgO!;Pw$*|$ zCnH2MuJ*M_5aTdTt-0X)GDW&@Z$Jiq>LE?=0TRXRP3?R(cP>@a`tzgljq=^`hrPN! zbBq20_Z-~?!H;B&vS=W5!t-AK zvGc^E`W6UzUEuu2*3Z-Nj%Ez*x`Y%{$pJp9*?{IR-rLv9N8LW*KX%`G)dPBx7@gs4 zCElBqqSQ$$|NZn<=kV0N;sNiqFHWqKh_uanRL)S9r)=daSA?!yWXMl)f%u)*s*LPt zvCfip;}uwL6oal&*O?j3V|9k4B1^Z=M=2z+w#>*5ZZmP4JbAs!j$^wp3HRyL`Z}h^ z9venXCVnS>uGKr=hwwWHlSEeC6du_s{Vh!RB>=RWu>q?q1tB9X`Pjzmlnsn8Et+KR z{2>q}WTiB{Vca;SdvImM z5_UyRKFcX)hE{D-yTV8)yegM z{Ugue{e~@ZP|<0TmNP`~Z<||TVpfyOnAsxnj^(k1pM1_e_$~pgPGc9!bJA6byy!KL z-_+ao(v~qD^uAlprqgQ*0q?se(r%JQ!ty*0{&d#qk)5~MDXR43+0)4#h!7}1Aa#FfRFM6LpeYiAKcc9mvY-I9`JR0Qkaf8kYpK@gkATD@eS%v z!sG<5qOe%ZU-Ks9q%bE+?H-y>&l1>c&~E-J_kFXQBY2J8o}xt$kDmSWQY@L94Yfw< zzL|dWYM5vk{}CijZG30bRsKdGjhsM?EJe%qJabg4P1P4gzSO!C2Sp$<`!aft~2_;D8{{4`X-A5rhewH3#l7r*3}~>=Q4njT38u z-r>z=V6tY8tv%*N^q!lT#bceBo^qqx?F(~bj6Tf`d9l3&WyE9T_>0n%^n-M44e_<34~;x^*@ zu_W-P89maPj`#l)v@qDtnZb|*7I~u2IC7yd7qs}Eu){S>8fY_QkH_NGGZR1hKQW&= zrq!A`DMzmC?r^ytlrh;g3>(nPvj2;-*Hh0Z9aa*D;|;J=F^1R!-p)j zY(D8I#DmM2xEpdQ1#}7fJ+;Fb*JR%9$|F!w{0K6m(1jtQ%||Z14O7tkTX|;s8GjUb zcT)L7W`%veyVhxWhPz0J(*x~zM|RxNqV+?F^&LE}C$9054S1tBO;NV8T@@>`-b>2c z|8W0`5sz6NAn#81m6!A8DB76wipQgIJX5lH5gC7R zVPLlG$%l`141X{A^7zAaeREqZmP`)z$5eb@A@BiK4nfWXVT)mC+@}N4y5gPqJsIhD zL8%f5()RAwbus;jSgbG2Qx$0>COAwNgg3$w+TM$-2-c?ep^nL#t;^RhnLSxy7>^DO4Ml_okU*8G`f9v^GlxXxeQ~tfj>g7Y>XxUS)ZEGs zZ)TmrqyAflROAGGQkal^Y~fhGTM@H>I$6`#!ZEN$nB&|<%ht1@zztJ_ zw1+MmE|J-}UY2}&WUakd>GY~Q#&c{8dM&H#Ew{!Yx6X6aly^*ydz3QxBE!?trdJ4l z!&HqYwuCpvL^pgmLEVL@c^*v*>RlDEyHs2dvbc}fYo5Ug>ybDWD8|UEpy7u25Eo^0 zUxL z*oUz}vFkfS%!Gyy_uAY^v^vZ3E~L^YUoxXa+cI6v_bzRor~GHuLnfJC$M@&{4$CP7ciVJFJ8TN%?iqfkm>C=*bEied*CnK1AoMOUZI9DwvgGtXyR^@; zwcCQZY(4OMLQC0#{Wjg%$=M!upL}G00n1M0Z**Pb6Eu!Umth!gKP4z+9dmB);84K{ zRD3J$S<M7|1XEl&?&-T+ ztz@;Z;+t;`hK?YXZvwgr*0vPEqswTY6v=M{poJ(vudPB{SsFCC* zIBLFJMm+IL#*Bo?$3{HF4{&E&v`KgBw*gJ?Ig+6k`%VI{t5 z!be1vwTAIO9P4sa9hUJ7U-U-cE^FH$E&8ogfpEMxJ7^iIh$*rk2rhIk$a5tR1?duq{p)bw4=;*`9z$Un;*f!vAd;Viw?Rgv=Ei8P|RrvWddsupS ze!KN88i~~T1v+$Wts>3OU#a{4x^na$CLZtKG@&r^?{SHNHnW+hK4zQvVjeAx8~IapJv`6+imDA%~O`O#hdO; z{Ymlc7^j{wENyZRVfF^o8807gA0-rdo!yH(2#Q*@I;MKsBUe@9j5vKr6l;YJLS;K| zgp+T?Bl!@P^6XiRWupW15B%~Wfy}Iup~athWxaYS`0orD40qY^`CzP7EtYxNDlmn%UVu*)*!n z$CHY3P|fPLztG3K&AiY-NS_b+(D&GSb8gJZ&L2amnmsN9!7h8Q@@sngHJFiP|3xzG z)SbUHMbqv!x!RJx2VA4(1q%pb22fX_V-GilJuC}zhrC49arV0_l|v|Az4^^1DpL(M zmk#~cWp>rob{xxDR^7l;V=cxs$4d6g6=Ph8|8+_4|1Br(V#_2Wua8$7J%x&+z);Wh KQkjlZ*uMbOrt?4m diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32 1.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32 1.png deleted file mode 100644 index 51da6224b37c731d380fd2dfe6774a681eef6b16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmV9H{yCN>^LR{*iKVU3%DOTtIG5QYO-oNfwX8i4goA2xMVp(zz0i*MyKjm4u0W^uOT zU%^BGVy3k~&*Du1Ad8y|u$r$XcKI5LHymI~T&^ZQW(PMhieg^CfdbUjZ*f;Eka{1j z8-D}_8@c}(`Ra+UEbwTtIqSwZMTE8fuVi_&+8j7g0GjkfJ6&8XEWzRO){ot7BA*ke z@5LDTaXj}WPLEw3e$^ZS%gyu3xk>}vbR67=No3P0l>QWDfF(NK(d~z?JAnSdTj&jj zP|t|?$ooJ@z0v^8%TT|5iwIl^YXP!p9zAmM(ABUi;Y@2ynHf_Oq$osk&3a8Cw3GqWAxUHXk;ewS#F0w)$Tj*rvSSdbGSEz$!0ph Yf5gaL{daeu761SM07*qoM6N<$f)(~m6951J diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-32.png deleted file mode 100644 index 51da6224b37c731d380fd2dfe6774a681eef6b16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmV9H{yCN>^LR{*iKVU3%DOTtIG5QYO-oNfwX8i4goA2xMVp(zz0i*MyKjm4u0W^uOT zU%^BGVy3k~&*Du1Ad8y|u$r$XcKI5LHymI~T&^ZQW(PMhieg^CfdbUjZ*f;Eka{1j z8-D}_8@c}(`Ra+UEbwTtIqSwZMTE8fuVi_&+8j7g0GjkfJ6&8XEWzRO){ot7BA*ke z@5LDTaXj}WPLEw3e$^ZS%gyu3xk>}vbR67=No3P0l>QWDfF(NK(d~z?JAnSdTj&jj zP|t|?$ooJ@z0v^8%TT|5iwIl^YXP!p9zAmM(ABUi;Y@2ynHf_Oq$osk&3a8Cw3GqWAxUHXk;ewS#F0w)$Tj*rvSSdbGSEz$!0ph Yf5gaL{daeu761SM07*qoM6N<$f)(~m6951J diff --git a/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-512 1.png b/swift/apple/Firezone/Assets.xcassets/AppIcon.appiconset/logo-512 1.png deleted file mode 100644 index 836392b17662168758d675968e0ccd86205b2fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11531 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 diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/Contents.json b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/Contents.json new file mode 100644 index 000000000..ffbc8757f --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "filename" : "logo-main-connected-light.svg", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "logo-main-connected-dark.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-dark.svg b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-dark.svg new file mode 100644 index 000000000..74a3c8e21 --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-dark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-light.svg b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-light.svg new file mode 100644 index 000000000..e1667b168 --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconConnected.imageset/logo-main-connected-light.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/Contents.json b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/Contents.json new file mode 100644 index 000000000..3d715462c --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "logo-main-disconnected-light.svg", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "logo-main-disconnected-dark.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-dark.svg b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-dark.svg new file mode 100644 index 000000000..32d077f7c --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-light.svg b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-light.svg new file mode 100644 index 000000000..51a59d2c7 --- /dev/null +++ b/swift/apple/Firezone/Assets.xcassets/MenuBarIconDisconnected.imageset/logo-main-disconnected-light.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/swift/apple/Firezone/Firezone.entitlements b/swift/apple/Firezone/Firezone.entitlements index 441279cd4..606375b71 100644 --- a/swift/apple/Firezone/Firezone.entitlements +++ b/swift/apple/Firezone/Firezone.entitlements @@ -2,14 +2,14 @@ + com.apple.developer.networking.multipath + com.apple.developer.networking.networkextension packet-tunnel-provider com.apple.security.app-sandbox - com.apple.security.files.user-selected.read-only - com.apple.security.network.client diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Features/SettingsView.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Features/SettingsView.swift index 862a4098b..2fa4f8d49 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Features/SettingsView.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Features/SettingsView.swift @@ -23,7 +23,7 @@ public final class SettingsViewModel: ObservableObject { } } - func saveButtonTapped() { + func save() { settingsClient.saveSettings(settings) onSettingsSaved() } @@ -31,6 +31,7 @@ public final class SettingsViewModel: ObservableObject { public struct SettingsView: View { @ObservedObject var model: SettingsViewModel + @Environment(\.dismiss) var dismiss public init(model: SettingsViewModel) { self.model = model @@ -76,12 +77,19 @@ public struct SettingsView: View { .navigationTitle("Settings") .toolbar { ToolbarItem(placement: .primaryAction) { - Button("Save") { - model.saveButtonTapped() + #if os(macOS) + Button("Done") { + self.doneButtonTapped() } + #endif } } } + + func doneButtonTapped() { + model.save() + dismiss() + } } struct FormTextField: View { @@ -104,10 +112,15 @@ struct FormTextField: View { .keyboardType(.URL) } #else - TextField(title, text: text, prompt: Text(placeholder)) - .autocorrectionDisabled() - .multilineTextAlignment(.trailing) - .foregroundColor(.secondary) + HStack(spacing: 30) { + Spacer() + TextField(title, text: text, prompt: Text(placeholder)) + .autocorrectionDisabled() + .multilineTextAlignment(.trailing) + .foregroundColor(.secondary) + .frame(maxWidth: 360) + Spacer() + } #endif } } diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Models/DisplayableResources.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Models/DisplayableResources.swift new file mode 100644 index 000000000..8af425fc3 --- /dev/null +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Models/DisplayableResources.swift @@ -0,0 +1,65 @@ +// +// DisplayableResources.swift +// (c) 2023 Firezone, Inc. +// LICENSE: Apache-2.0 +// + +// This models resources that are displayed in the UI + +import Foundation + +public class DisplayableResources { + public typealias Resource = (name: String, location: String) + public private(set) var version: UInt64 + public private(set) var versionString: String + public private(set) var orderedResources: [Resource] + + public init(version: UInt64, resources: [Resource]) { + self.version = version + self.versionString = "\(version)" + self.orderedResources = resources.sorted { $0.name < $1.name } + } + + public convenience init() { + self.init(version: 0, resources: []) + } + + public func update(resources: [Resource]) { + self.version = self.version &+ 1 // Overflow is ok + self.versionString = "\(version)" + self.orderedResources = resources.sorted { $0.name < $1.name } + } +} + +extension DisplayableResources { + public func toData() -> Data? { + ( + "\(versionString)," + + (orderedResources.flatMap { [$0.name, $0.location] }) + .map { $0.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) }.compactMap { $0 } + .joined(separator: ",") + ).data(using: .utf8) + } + + public convenience init?(from data: Data) { + guard let components = String(data: data, encoding: .utf8)?.split(separator: ",") else { + return nil + } + guard let versionString = components.first, let version = UInt64(versionString) else { + return nil + } + var resources: [Resource] = [] + for index in stride(from: 2, to: components.count, by: 2) { + guard let name = components[index - 1].removingPercentEncoding, + let location = components[index].removingPercentEncoding else { + continue + } + resources.append((name: name, location: location)) + } + self.init(version: version, resources: resources) + } + + public func versionStringToData() -> Data { + versionString.data(using: .utf8)! + } +} diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/TunnelStore.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/TunnelStore.swift index 7b89a742a..0a7a717e3 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/TunnelStore.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/TunnelStore.swift @@ -11,7 +11,6 @@ import OSLog // TODO: Can this file be removed since we're managing the tunnel in connlib? -@MainActor final class TunnelStore: ObservableObject { private static let logger = Logger.make(for: TunnelStore.self) @@ -27,6 +26,12 @@ final class TunnelStore: ObservableObject { didSet { TunnelStore.logger.info("isEnabled changed: \(self.isEnabled.description)") } } + @Published private(set) var resources = DisplayableResources() + + private var resourcesTimer: Timer? { + didSet(oldValue) { oldValue?.invalidate() } + } + private var tunnelObservingTasks: [Task] = [] init(tunnel: NETunnelProviderManager) { @@ -71,6 +76,37 @@ final class TunnelStore: ObservableObject { session.stopTunnel() } + func beginUpdatingResources() { + self.updateResources() + let timer = Timer(timeInterval: 1 /*second*/, repeats: true) { [weak self] _ in + guard let self = self else { return } + guard self.status == .connected else { return } + self.updateResources() + } + RunLoop.main.add(timer, forMode: .common) + self.resourcesTimer = timer + } + + func endUpdatingResources() { + self.resourcesTimer = nil + } + + private func updateResources() { + let session = tunnel.connection as! NETunnelProviderSession + let resourcesQuery = resources.versionStringToData() + do { + try session.sendProviderMessage(resourcesQuery) { [weak self] reply in + if let reply = reply { // If reply is nil, then the resources have not changed + if let updatedResources = DisplayableResources(from: reply) { + self?.resources = updatedResources + } + } + } + } catch { + TunnelStore.logger.error("Error: sendProviderMessage: \(error)") + } + } + private static func makeManager() -> NETunnelProviderManager { logger.trace("\(#function)") diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/MenuBar.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/MenuBar.swift index 7ab895bab..a98569fa1 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/MenuBar.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/MenuBar.swift @@ -13,7 +13,7 @@ import SwiftUI @MainActor - public final class MenuBar { +public final class MenuBar: NSObject { let logger = Logger.make(for: MenuBar.self) @Dependency(\.mainQueue) private var mainQueue @@ -25,6 +25,12 @@ private var cancellables: Set = [] private var statusItem: NSStatusItem + private var orderedResources: [DisplayableResources.Resource] = [] + private var isMenuVisible = false { + didSet { handleMenuVisibilityOrStatusChanged() } + } + private lazy var disconnectedIcon = NSImage(named: "MenuBarIconDisconnected") + private lazy var connectedIcon = NSImage(named: "MenuBarIconConnected") let settingsViewModel: SettingsViewModel @@ -37,16 +43,13 @@ statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) - if let button = statusItem.button { - button.image = NSImage( - // TODO: Replace with AppIcon when it exists - systemSymbolName: "circle", - accessibilityDescription: "Firezone icon" - ) - } - + super.init() createMenu() + if let button = statusItem.button { + button.image = disconnectedIcon + } + Task { let tunnel = try await TunnelStore.loadOrCreate() self.appStore = AppStore(tunnelStore: TunnelStore(tunnel: tunnel)) @@ -70,9 +73,23 @@ .sink { [weak self] status in if status == .connected { self?.connectionMenuItem.title = "Disconnect" + self?.statusItem.button?.image = self?.connectedIcon } else { self?.connectionMenuItem.title = "Connect" + self?.statusItem.button?.image = self?.disconnectedIcon } + self?.handleMenuVisibilityOrStatusChanged() + if status != .connected { + self?.setOrderedResources([]) + } + } + .store(in: &cancellables) + + appStore?.tunnel.$resources + .receive(on: mainQueue) + .sink { [weak self] resources in + guard let self = self else { return } + self.setOrderedResources(resources.orderedResources) } .store(in: &cancellables) } @@ -83,6 +100,7 @@ menu, title: "Connect", action: #selector(connectButtonTapped), + isHidden: true, target: self ) @@ -99,35 +117,62 @@ isHidden: true, target: self ) + private lazy var resourcesTitleMenuItem = createMenuItem( + menu, + title: "No Resources", + action: nil, + isHidden: false, + target: self + ) + private lazy var resourcesSeparatorMenuItem = NSMenuItem.separator() + private lazy var aboutMenuItem = createMenuItem( + menu, + title: "About", + action: #selector(aboutButtonTapped), + target: self + ) private lazy var settingsMenuItem = createMenuItem( menu, title: "Settings", action: #selector(settingsButtonTapped), target: self ) - private lazy var quitMenuItem = createMenuItem( - menu, - title: "Quit", - action: #selector(NSApplication.terminate(_:)), - key: "q", - target: nil - ) + private lazy var quitMenuItem: NSMenuItem = { + let menuItem = createMenuItem( + menu, + title: "Quit", + action: #selector(NSApplication.terminate(_:)), + key: "q", + target: nil + ) + if let appName = Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String { + menuItem.title = "Quit \(appName)" + } + return menuItem + }() private func createMenu() { menu.addItem(connectionMenuItem) menu.addItem(loginMenuItem) menu.addItem(logoutMenuItem) menu.addItem(NSMenuItem.separator()) + + menu.addItem(resourcesTitleMenuItem) + menu.addItem(resourcesSeparatorMenuItem) + + menu.addItem(aboutMenuItem) menu.addItem(settingsMenuItem) menu.addItem(quitMenuItem) + menu.delegate = self + statusItem.menu = menu } private func createMenuItem( _: NSMenu, title: String, - action: Selector, + action: Selector?, isHidden: Bool = false, key: String = "", target: AnyObject? @@ -136,6 +181,7 @@ item.isHidden = isHidden item.target = target + item.isEnabled = (action != nil) return item } @@ -148,7 +194,6 @@ } loginMenuItem.target = nil logoutMenuItem.isHidden = false - connectionMenuItem.isHidden = false } private func showLoggedOut() { @@ -156,7 +201,6 @@ loginMenuItem.target = self logoutMenuItem.isHidden = true - connectionMenuItem.isHidden = true } @objc private func connectButtonTapped() { @@ -195,8 +239,81 @@ openSettingsWindow() } + @objc private func aboutButtonTapped() { + NSApp.activate(ignoringOtherApps: true) + NSApp.orderFrontStandardAboutPanel(self) + } + private func openSettingsWindow() { NSWorkspace.shared.open(URL(string: "firezone://settings")!) } + + private func handleMenuVisibilityOrStatusChanged() { + guard let appStore = appStore else { return } + let status = appStore.tunnel.status + if isMenuVisible && status == .connected { + appStore.tunnel.beginUpdatingResources() + } else { + appStore.tunnel.endUpdatingResources() + } + resourcesTitleMenuItem.isHidden = (status != .connected) + resourcesSeparatorMenuItem.isHidden = (status != .connected) + } + + private func setOrderedResources(_ newOrderedResources: [DisplayableResources.Resource]) { + let diff = newOrderedResources.difference( + from: self.orderedResources, + by: { $0.name == $1.name && $0.location == $1.location } + ) + let baseIndex = menu.index(of: resourcesTitleMenuItem) + 1 + for change in diff { + switch change { + case .insert(offset: let offset, element: let element, associatedWith: _): + let menuItem = createResourceMenuItem(title: element.name, submenuTitle: element.location) + menu.insertItem(menuItem, at: baseIndex + offset) + orderedResources.insert(element, at: offset) + case .remove(offset: let offset, element: _, associatedWith: _): + menu.removeItem(at: baseIndex + offset) + orderedResources.remove(at: offset) + } + } + resourcesTitleMenuItem.title = orderedResources.isEmpty ? "No Resources" : "Resources" + } + + private func createResourceMenuItem(title: String, submenuTitle: String) -> NSMenuItem { + let item = NSMenuItem(title: title, action: nil, keyEquivalent: "") + + let subMenu = NSMenu() + let subMenuItem = NSMenuItem(title: submenuTitle, action: #selector(resourceValueTapped(_:)), keyEquivalent: "") + subMenuItem.isEnabled = true + subMenuItem.target = self + subMenu.addItem(subMenuItem) + + item.isHidden = false + item.submenu = subMenu + + return item + } + + @objc private func resourceValueTapped(_ sender: AnyObject?) { + if let value = (sender as? NSMenuItem)?.title { + copyToClipboard(value) + } + } + + private func copyToClipboard(_ string: String) { + let pasteBoard = NSPasteboard.general + pasteBoard.clearContents() + pasteBoard.writeObjects([string as NSString]) + } + } + + extension MenuBar: NSMenuDelegate { + public func menuNeedsUpdate(_ menu: NSMenu) { + isMenuVisible = true + } + public func menuDidClose(_ menu: NSMenu) { + isMenuVisible = false + } } #endif diff --git a/swift/apple/FirezoneNetworkExtension/Adapter.swift b/swift/apple/FirezoneNetworkExtension/Adapter.swift index 6adb88d6d..6c0ee8ca4 100644 --- a/swift/apple/FirezoneNetworkExtension/Adapter.swift +++ b/swift/apple/FirezoneNetworkExtension/Adapter.swift @@ -5,6 +5,7 @@ // import Foundation import NetworkExtension +import FirezoneKit import os.log public enum AdapterError: Error { @@ -31,11 +32,7 @@ private enum State { public class Adapter { private let logger = Logger(subsystem: "dev.firezone.firezone", category: "packet-tunnel") - // Maintain a handle to the currently instantiated tunnel adapter 🤮 - public static var currentAdapter: Adapter? - - // Maintain a reference to the initialized callback handler - public static var callbackHandler: CallbackHandler? + private var callbackHandler: CallbackHandler // Latest applied NETunnelProviderNetworkSettings public var lastNetworkSettings: NEPacketTunnelNetworkSettings? @@ -52,19 +49,16 @@ public class Adapter { /// Adapter state. private var state: State = .stopped + /// Keep track of resources + private var displayableResources = DisplayableResources() + public init(with packetTunnelProvider: NEPacketTunnelProvider) { self.packetTunnelProvider = packetTunnelProvider - - // There must be a better way than making this a static class var... - Self.currentAdapter = self - Self.callbackHandler = CallbackHandler() - Self.callbackHandler?.delegate = self + self.callbackHandler = CallbackHandler() + self.callbackHandler.delegate = self } deinit { - // Remove static var reference - Self.currentAdapter = nil - // Cancel network monitor networkMonitor?.cancel() @@ -94,7 +88,7 @@ public class Adapter { do { try self.setNetworkSettings(self.generateNetworkSettings(ipv4Routes: [], ipv6Routes: [])) self.state = .started( - try WrappedSession.connect("http://localhost:4568", "test-token", Self.callbackHandler!) + try WrappedSession.connect("http://localhost:4568", "test-token", self.callbackHandler) ) self.networkMonitor = networkMonitor completionHandler(nil) @@ -129,6 +123,17 @@ public class Adapter { } } + public func getDisplayableResourcesIfVersionDifferentFrom( + referenceVersionString: String, completionHandler: @escaping (DisplayableResources?) -> Void) { + workQueue.async { + if referenceVersionString == self.displayableResources.versionString { + completionHandler(nil) + } else { + completionHandler(self.displayableResources) + } + } + } + public func generateNetworkSettings( addresses4: [String] = ["100.100.111.2"], addresses6: [String] = ["fd00:0222:2011:1111::2"], ipv4Routes: [NEIPv4Route], ipv6Routes: [NEIPv6Route] @@ -254,14 +259,16 @@ public class Adapter { private func didReceivePathUpdate(path: Network.NWPath) { #if os(macOS) if case .started(let wrappedSession) = self.state { - wrappedSession.bumpSockets() + self.logger.log(level: .debug, "Suppressing call to bumpSockets()") + // wrappedSession.bumpSockets() } #elseif os(iOS) switch self.state { case .started(let wrappedSession): if path.status == .satisfied { - wrappedSession.disableSomeRoamingForBrokenMobileSemantics() - wrappedSession.bumpSockets() + self.logger.log(level: .debug, "Suppressing calls to disableSomeRoamingForBrokenMobileSemantics() and bumpSockets()") + // wrappedSession.disableSomeRoamingForBrokenMobileSemantics() + // wrappedSession.bumpSockets() } else { //self.logger.log(.debug, "Connectivity offline, pausing backend.") self.state = .temporaryShutdown @@ -277,7 +284,7 @@ public class Adapter { try self.setNetworkSettings(self.lastNetworkSettings!) self.state = .started( - try WrappedSession.connect("http://localhost:4568", "test-token", Self.callbackHandler!) + try WrappedSession.connect("http://localhost:4568", "test-token", self.callbackHandler) ) } catch { self.logger.log(level: .debug, "Failed to restart backend: \(error.localizedDescription)") @@ -294,72 +301,41 @@ public class Adapter { } extension Adapter: CallbackHandlerDelegate { - public func onConnect(tunnelAddressIPv4: String, tunnelAddressIPv6: String) { - let addresses4 = [tunnelAddressIPv4] - let addresses6 = [tunnelAddressIPv6] - let ipv4Routes = - Adapter.currentAdapter?.lastNetworkSettings?.ipv4Settings?.includedRoutes ?? [] - let ipv6Routes = - Adapter.currentAdapter?.lastNetworkSettings?.ipv6Settings?.includedRoutes ?? [] - - _ = setTunnelSettingsKeepingSomeExisting( - addresses4: addresses4, addresses6: addresses6, ipv4Routes: ipv4Routes, ipv6Routes: ipv6Routes - ) - } - - public func onUpdateResources(resourceList: String) { - let addresses4 = - self.lastNetworkSettings?.ipv4Settings?.addresses ?? ["100.100.111.2"] - let addresses6 = - self.lastNetworkSettings?.ipv6Settings?.addresses ?? [ - "fd00:0222:2021:1111::2" - ] - - // TODO: Use actual passed in resources to achieve split tunnel - let ipv4Routes = [NEIPv4Route(destinationAddress: "100.64.0.0", subnetMask: "255.192.0.0")] - let ipv6Routes = [ - NEIPv6Route(destinationAddress: "fd00:0222:2021:1111::0", networkPrefixLength: 64) - ] - - _ = setTunnelSettingsKeepingSomeExisting( - addresses4: addresses4, addresses6: addresses6, ipv4Routes: ipv4Routes, ipv6Routes: ipv6Routes - ) - } - - public func onDisconnect() { + public func onSetInterfaceConfig(tunnelAddressIPv4: String, tunnelAddressIPv6: String, dnsAddress: String) { // Unimplemented } - public func onError(error: Error, isRecoverable: Bool) { - let logger = Logger(subsystem: "dev.firezone.firezone", category: "packet-tunnel") - logger.log(level: .error, "Internal connlib error: \(String(describing: error), privacy: .public)") + public func onTunnelReady() { + // Unimplemented } - private func setTunnelSettingsKeepingSomeExisting( - addresses4: [String], addresses6: [String], ipv4Routes: [NEIPv4Route], ipv6Routes: [NEIPv6Route] - ) -> Bool { - let logger = Logger(subsystem: "dev.firezone.firezone", category: "packet-tunnel") + public func onAddRoute(_: String) { + // Unimplemented + } - do { - /* If the tunnel interface addresses are being updated, it's impossible for the tunnel to - stay up due to the way WireGuard works. Still, we try not to change the tunnel's routes - here Just In Case™. - */ - try self.setNetworkSettings( - self.generateNetworkSettings( - addresses4: addresses4, - addresses6: addresses6, - ipv4Routes: ipv4Routes, - ipv6Routes: ipv6Routes - ) - ) + public func onRemoveRoute(_: String) { + // Unimplemented + } - return true - } catch let error { - logger.log(level: .debug, "Error setting adapter settings: \(String(describing: error))") - - return false + public func onUpdateResources(resourceList: String) { + workQueue.async { + let jsonString = "[\(resourceList)]" + guard let jsonData = jsonString.data(using: .utf8) else { + return + } + guard let networkResources = try? JSONDecoder().decode([NetworkResource].self, from: jsonData) else { + return + } + self.displayableResources.update(resources: networkResources.map { $0.displayableResource }) } } + public func onDisconnect(error: Error) { + // Unimplemented + } + + public func onError(error: Error) { + let logger = Logger(subsystem: "dev.firezone.firezone", category: "packet-tunnel") + logger.log(level: .error, "Internal connlib error: \(String(describing: error), privacy: .public)") + } } diff --git a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements index b63ed3cab..ffab33e01 100644 --- a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements +++ b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements @@ -6,7 +6,5 @@ packet-tunnel-provider - com.apple.security.application-groups - diff --git a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements index 9712ea7ce..4e920afc0 100644 --- a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements +++ b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements @@ -8,11 +8,7 @@ com.apple.security.app-sandbox - com.apple.security.application-groups - com.apple.security.network.client - com.apple.security.network.server - diff --git a/swift/apple/FirezoneNetworkExtension/NetworkResource.swift b/swift/apple/FirezoneNetworkExtension/NetworkResource.swift new file mode 100644 index 000000000..eafe5028e --- /dev/null +++ b/swift/apple/FirezoneNetworkExtension/NetworkResource.swift @@ -0,0 +1,79 @@ +// +// NetworkResource.swift +// (c) 2023 Firezone, Inc. +// LICENSE: Apache-2.0 +// + +import Foundation + +public struct NetworkResource: Decodable { + enum ResourceLocation { + case dns(domain: String, ipv4: String, ipv6: String) + case cidr(cidrAddress: String) + + func toString() -> String { + switch self { + case .dns(let domain, ipv4: _, ipv6: _): return domain + case .cidr(let cidrAddress): return cidrAddress + } + } + } + + let name: String + let resourceLocation: ResourceLocation + + var displayableResource: (name: String, location: String) { + (name: name, location: resourceLocation.toString()) + } +} + +// A DNS resource example: +// { +// "type": "dns", +// "address": "app.posthog.com", +// "name": "PostHog", +// "ipv4": "100.64.0.1", +// "ipv6": "fd00:2021:11111::1" +// } +// +// A CIDR resource example: +// { +// "type": "cidr", +// "address": "10.0.0.0/24", +// "name": "AWS SJC VPC1", +// } + +extension NetworkResource { + enum ResourceKeys: String, CodingKey { + case type + case address + case name + case ipv4 + case ipv6 + } + + enum DecodeError: Error { + case invalidType(String) + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: ResourceKeys.self) + let name = try container.decode(String.self, forKey: .name) + let type = try container.decode(String.self, forKey: .type) + let resourceLocation: ResourceLocation = try { + switch type { + case "dns": + let domain = try container.decode(String.self, forKey: .address) + let ipv4 = try container.decode(String.self, forKey: .ipv4) + let ipv6 = try container.decode(String.self, forKey: .ipv6) + return .dns(domain: domain, ipv4: ipv4, ipv6: ipv6) + case "cidr": + let address = try container.decode(String.self, forKey: .address) + return .cidr(cidrAddress: address) + default: + throw DecodeError.invalidType(type) + } + }() + self.init(name: name, resourceLocation: resourceLocation) + } +} diff --git a/swift/apple/FirezoneNetworkExtension/PacketTunnelProvider.swift b/swift/apple/FirezoneNetworkExtension/PacketTunnelProvider.swift index 8e7946315..2cef17484 100644 --- a/swift/apple/FirezoneNetworkExtension/PacketTunnelProvider.swift +++ b/swift/apple/FirezoneNetworkExtension/PacketTunnelProvider.swift @@ -69,4 +69,11 @@ class PacketTunnelProvider: NEPacketTunnelProvider { exit(0) #endif } + + override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)? = nil) { + let query = String(data: messageData, encoding: .utf8) ?? "" + adapter.getDisplayableResourcesIfVersionDifferentFrom(referenceVersionString: query) { displayableResources in + completionHandler?(displayableResources?.toData()) + } + } }