From c578624d6b2d7c36dc1d9576d5c6ffd2a22a0d00 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Sun, 3 Jul 2016 12:01:53 -0500 Subject: [PATCH] test and cosmetic changes --- build/lwip/liblwip.so | Bin 82172 -> 0 bytes build/osx_shared_lib/README.md | 114 ------------------------- build/osx_shared_lib/libztintercept.so | Bin 15816 -> 0 bytes src/libztintercept.so | Bin 15816 -> 0 bytes 4 files changed, 114 deletions(-) delete mode 100755 build/lwip/liblwip.so delete mode 100644 build/osx_shared_lib/README.md delete mode 100755 build/osx_shared_lib/libztintercept.so delete mode 100755 src/libztintercept.so diff --git a/build/lwip/liblwip.so b/build/lwip/liblwip.so deleted file mode 100755 index b520fc3659b81c4e7a3f367933ad7b7670ad2570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82172 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 GQvVlpO}V)M diff --git a/build/osx_shared_lib/README.md b/build/osx_shared_lib/README.md deleted file mode 100644 index 55010ee..0000000 --- a/build/osx_shared_lib/README.md +++ /dev/null @@ -1,114 +0,0 @@ -OSX + ZeroTier SDK -==== - -Welcome! - -Imagine a flat, encrypted, no-configuration LAN for all of the instances of your OSX app. - -This short tutorial will show you how to enable ZeroTier functionality for your iOS app with little to no code modification. Check out our [ZeroTier SDK](https://www.zerotier.com/blog) page for more info on how the integration works and [Shim Techniques](https://www.zerotier.com/blog) for a discussion of shims available for your app/technology. - -In this example we aim to set up a minimal XCode project which contains all of the components necessary to enable ZeroTier for your app. If you'd rather skip all of these steps and grab the code, look in the [sdk/OSX](https://github.com/zerotier/ZeroTierSDK/tree/dev/sdk/iOS) folder of the source tree. Otherwise, let's get started! - -**Step 1: Add ZeroTier source and Netcon-iOS XCode project to yours** -- Place a copy of the ZeroTierOne source in a folder at the same level as your project -- Add `ZeroTierSDK/src/tests/iOS/Netcon-iOS.xcodeproj` to your project - -**Step 2: Add ZeroTier binaries to your app** -- Add `ZeroTierSDK.frameworkiOS` to *General->Embedded Binaries* -- Add `libServiceSetup.a` and `ZeroTierSDK.framework` to *Build Phases->Link Binary With Libraries* - -**Step 3: Configure your project** -- Add `$(SRCROOT)/../ZeroTierOne/src` to *Build Settings->Header Search Paths* for your project -- Add `-D__IOS__` to *Build Settings->Other C Flags* -- Add `zerotiersdk/tests/iOS/Netcon-iOS/NetconWrapper.cpp` and `zerotiersdk/tests/iOS/Netcon-iOS/NetconWrapper.hpp` to your project: -- Add contents of `ZeroTierOne/netcon/tests/iOS/Netcon-iOS/SDK-iOS-Bridging-Header.h` to your project’s bridging header. - -*Note: You should have been prompted to create a bridging header for your project, if you haven't make sure you do this and add the native function prototypes manually from the bridging header we provide.* - -**Step 4: App Code Modifications** - -After you've linked the two projects you need to find a place in your code to set up the ZeroTier service thread: - -``` -var service_thread : NSThread! -func ztnc_start_service() { - let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) - start_service(path[0]) -} -``` - -...and then start it. If you enabled the proxy service via `-DUSE_SOCKS_PROXY` it will start automatically and be reachable at `0.0.0.0:1337`: - -``` -dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { - self.service_thread = NSThread(target:self, selector:"ztnc_start_service", object:nil) - self.service_thread.start() -}); -``` - -**Step 5: Pick an API** - -**Step 6: Join a network!** - - Simply call `zt_join_network("XXXXXXXXXXXXXXXX")` - -*** -## Linking into an application on Mac OSX - -Example: - - gcc myapp.c -o myapp libztintercept.so - export ZT_NC_NETWORK=/tmp/netcon-test-home/nc_8056c2e21c000001 - -Start service - - ./zerotier-netcon-service -d -p8000 /tmp/netcon-test-home - -Run application - - ./myapp - - - -## XCode Desktop App Integration - -*NOTE: a sample OSX desktop application with ZeroTier integrated can be found [here](../integrations/Apple/Example_OSX_App)* - -**Step 1: Build `ZeroTierSDK_OSX.framework`** - - From the main repo directory, `make osx_app_framework`. This will use the XCode commandline tools to build and copy the framework into `build`. - -**Step 2: Add `ZeroTierSDK_OSX.framework` to your project** - -**Step 3: Add its path to your *Build Settings -> Framework Search Paths***: - - For example: `$(PROJECT_DIR)/../../../build/OSX_app_framework/Release` - -**Step 4: Pick an [API](# API) to use** - -**Step 5: Join a network!** - - Simply call `zt_join_network("XXXXXXXXXXXXXXXX")` - -*** -## API - -This integration allows for the following shim combinations: -- `Hook of BSD-like sockets`: Use BSD-like sockets as you normally would. -- `Proxy of NSStream`: Create NSStream. Configure stream for SOCKS5 Proxy. Use stream. -- `Changeling of BSD-like sockets`: Call `start_changeling()` and then use BSD-like sockets as you normally would. -- `Direct Call`: Consult [SDK-iOS-Bridging-Header.h](netcon/iOS/Netcon-iOS/Netcon-iOS-Bridging-Header.h). - -If functional interposition isn't available for the API or library you've chosen to use, ZeroTier offers a SOCKS5 proxy server which can allow connectivity to your virtual network as long as your client API supports the SOCKS5 protocol. This proxy service will run alongside the tap service and can be turned on by compiling with the `-DUSE_SOCKS_PROXY` flag in *Build Settings->Other C Flags*. By default, the proxy service is available at `0.0.0.0:1337`. - - -#### NSStream and SOCKS Proxy - -As an example, here's how one would configure a NSStream object to redirect all network activity to the ZeroTier SOCKS proxy server: - -``` -// BEGIN proxy configuration -let myDict:NSDictionary = [NSStreamSOCKSProxyHostKey : "0.0.0.0", - NSStreamSOCKSProxyPortKey : 1337, - NSStreamSOCKSProxyVersionKey : NSStreamSOCKSProxyVersion5] - -inputStream!.setProperty(myDict, forKey: NSStreamSOCKSProxyConfigurationKey) -outputStream!.setProperty(myDict, forKey: NSStreamSOCKSProxyConfigurationKey) -// END proxy configuration -``` diff --git a/build/osx_shared_lib/libztintercept.so b/build/osx_shared_lib/libztintercept.so deleted file mode 100755 index fb112e911d7190a08305907890ae1a311bfefe23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15816 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 diff --git a/src/libztintercept.so b/src/libztintercept.so deleted file mode 100755 index fb112e911d7190a08305907890ae1a311bfefe23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15816 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