From 3d3b767180fe4d9f8a4f9ee71a2134db3475291e Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Wed, 22 Jun 2016 11:26:21 -0700 Subject: [PATCH] Added bare-bones example OSX desktop app integration project --- .../Example_OSX_App.xcodeproj/project.pbxproj | 307 ++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 20730 bytes .../xcschemes/Example_OSX_App.xcscheme | 91 ++ .../xcschemes/xcschememanagement.plist | 22 + .../Example_OSX_App/AppDelegate.swift | 26 + .../AppIcon.appiconset/Contents.json | 58 ++ .../Base.lproj/Main.storyboard | 926 ++++++++++++++++++ .../Example_OSX_App/Info.plist | 34 + .../Example_OSX_App/ViewController.swift | 27 + .../project.pbxproj | 2 - .../UserInterfaceState.xcuserstate | Bin 50874 -> 51187 bytes .../xcschemes/ZeroTierSDK_OSX.xcscheme | 0 .../ZeroTierSDK_Unity3D_OSX.xcscheme | 0 .../ZeroTierSDK_Unity3D_iOS.xcscheme | 0 .../xcschemes/ZeroTierSDK_iOS.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 8 +- integrations/README.md | 5 +- src/SDK_Sockets.c | 3 + 19 files changed, 1507 insertions(+), 9 deletions(-) create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.pbxproj create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/Example_OSX_App.xcscheme create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App/AppDelegate.swift create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App/Base.lproj/Main.storyboard create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App/Info.plist create mode 100644 integrations/Apple/Example_OSX_App/Example_OSX_App/ViewController.swift rename integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/{xcuserdata/Joseph.xcuserdatad => xcshareddata}/xcschemes/ZeroTierSDK_OSX.xcscheme (100%) rename integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/{xcuserdata/Joseph.xcuserdatad => xcshareddata}/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme (100%) rename integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/{xcuserdata/Joseph.xcuserdatad => xcshareddata}/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme (100%) rename integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/{xcuserdata/Joseph.xcuserdatad => xcshareddata}/xcschemes/ZeroTierSDK_iOS.xcscheme (100%) diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.pbxproj b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c60eaaa --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.pbxproj @@ -0,0 +1,307 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7CA571041D1B0D9500720883 /* ZeroTierSDK_OSX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CA571031D1B0D9500720883 /* ZeroTierSDK_OSX.framework */; }; + 7CA571051D1B0DA100720883 /* ZeroTierSDK_OSX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CA571031D1B0D9500720883 /* ZeroTierSDK_OSX.framework */; }; + 7CA571061D1B0DA100720883 /* ZeroTierSDK_OSX.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7CA571031D1B0D9500720883 /* ZeroTierSDK_OSX.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 7CFCB4311D1AFEE800D3E66C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFCB4301D1AFEE800D3E66C /* AppDelegate.swift */; }; + 7CFCB4331D1AFEE800D3E66C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFCB4321D1AFEE800D3E66C /* ViewController.swift */; }; + 7CFCB4351D1AFEE800D3E66C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7CFCB4341D1AFEE800D3E66C /* Assets.xcassets */; }; + 7CFCB4381D1AFEE800D3E66C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7CFCB4361D1AFEE800D3E66C /* Main.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7CA571071D1B0DA100720883 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 7CA571061D1B0DA100720883 /* ZeroTierSDK_OSX.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 7CA571031D1B0D9500720883 /* ZeroTierSDK_OSX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ZeroTierSDK_OSX.framework; path = ../../../build/OSX_app_framework/Debug/ZeroTierSDK_OSX.framework; sourceTree = ""; }; + 7CFCB42D1D1AFEE800D3E66C /* Example_OSX_App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example_OSX_App.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CFCB4301D1AFEE800D3E66C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7CFCB4321D1AFEE800D3E66C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 7CFCB4341D1AFEE800D3E66C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 7CFCB4371D1AFEE800D3E66C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 7CFCB4391D1AFEE800D3E66C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7CFCB42A1D1AFEE800D3E66C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CA571051D1B0DA100720883 /* ZeroTierSDK_OSX.framework in Frameworks */, + 7CA571041D1B0D9500720883 /* ZeroTierSDK_OSX.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7CFCB4241D1AFEE800D3E66C = { + isa = PBXGroup; + children = ( + 7CA571031D1B0D9500720883 /* ZeroTierSDK_OSX.framework */, + 7CFCB42F1D1AFEE800D3E66C /* Example_OSX_App */, + 7CFCB42E1D1AFEE800D3E66C /* Products */, + ); + sourceTree = ""; + }; + 7CFCB42E1D1AFEE800D3E66C /* Products */ = { + isa = PBXGroup; + children = ( + 7CFCB42D1D1AFEE800D3E66C /* Example_OSX_App.app */, + ); + name = Products; + sourceTree = ""; + }; + 7CFCB42F1D1AFEE800D3E66C /* Example_OSX_App */ = { + isa = PBXGroup; + children = ( + 7CFCB4301D1AFEE800D3E66C /* AppDelegate.swift */, + 7CFCB4321D1AFEE800D3E66C /* ViewController.swift */, + 7CFCB4341D1AFEE800D3E66C /* Assets.xcassets */, + 7CFCB4361D1AFEE800D3E66C /* Main.storyboard */, + 7CFCB4391D1AFEE800D3E66C /* Info.plist */, + ); + path = Example_OSX_App; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7CFCB42C1D1AFEE800D3E66C /* Example_OSX_App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7CFCB43C1D1AFEE800D3E66C /* Build configuration list for PBXNativeTarget "Example_OSX_App" */; + buildPhases = ( + 7CFCB4291D1AFEE800D3E66C /* Sources */, + 7CFCB42A1D1AFEE800D3E66C /* Frameworks */, + 7CFCB42B1D1AFEE800D3E66C /* Resources */, + 7CA571071D1B0DA100720883 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Example_OSX_App; + productName = Example_OSX_App; + productReference = 7CFCB42D1D1AFEE800D3E66C /* Example_OSX_App.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7CFCB4251D1AFEE800D3E66C /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = "ZeroTier Inc."; + TargetAttributes = { + 7CFCB42C1D1AFEE800D3E66C = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 7CFCB4281D1AFEE800D3E66C /* Build configuration list for PBXProject "Example_OSX_App" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7CFCB4241D1AFEE800D3E66C; + productRefGroup = 7CFCB42E1D1AFEE800D3E66C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7CFCB42C1D1AFEE800D3E66C /* Example_OSX_App */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7CFCB42B1D1AFEE800D3E66C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CFCB4351D1AFEE800D3E66C /* Assets.xcassets in Resources */, + 7CFCB4381D1AFEE800D3E66C /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7CFCB4291D1AFEE800D3E66C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CFCB4331D1AFEE800D3E66C /* ViewController.swift in Sources */, + 7CFCB4311D1AFEE800D3E66C /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 7CFCB4361D1AFEE800D3E66C /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 7CFCB4371D1AFEE800D3E66C /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 7CFCB43A1D1AFEE800D3E66C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../../../build/OSX_app_framework/Debug"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7CFCB43B1D1AFEE800D3E66C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../../../build/OSX_app_framework/Debug"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 7CFCB43D1D1AFEE800D3E66C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Example_OSX_App/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.Example-OSX-App"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 7CFCB43E1D1AFEE800D3E66C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Example_OSX_App/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.Example-OSX-App"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7CFCB4281D1AFEE800D3E66C /* Build configuration list for PBXProject "Example_OSX_App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CFCB43A1D1AFEE800D3E66C /* Debug */, + 7CFCB43B1D1AFEE800D3E66C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7CFCB43C1D1AFEE800D3E66C /* Build configuration list for PBXNativeTarget "Example_OSX_App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CFCB43D1D1AFEE800D3E66C /* Debug */, + 7CFCB43E1D1AFEE800D3E66C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7CFCB4251D1AFEE800D3E66C /* Project object */; +} diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..31bb97f --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a7af9a35f9dcb6804d9fa9d42ebc9991ffcd1d02 GIT binary patch literal 20730 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..35a845d --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Example_OSX_App.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 7CFCB42C1D1AFEE800D3E66C + + primary + + + + + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App/AppDelegate.swift b/integrations/Apple/Example_OSX_App/Example_OSX_App/AppDelegate.swift new file mode 100644 index 0000000..bca7cac --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App/AppDelegate.swift @@ -0,0 +1,26 @@ +// +// AppDelegate.swift +// Example_OSX_App +// +// Created by Joseph Henry on 6/22/16. +// Copyright © 2016 ZeroTier Inc. All rights reserved. +// + +import Cocoa + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + + + + func applicationDidFinishLaunching(aNotification: NSNotification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(aNotification: NSNotification) { + // Insert code here to tear down your application + } + + +} + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App/Assets.xcassets/AppIcon.appiconset/Contents.json b/integrations/Apple/Example_OSX_App/Example_OSX_App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..2db2b1c --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App/Base.lproj/Main.storyboard b/integrations/Apple/Example_OSX_App/Example_OSX_App/Base.lproj/Main.storyboard new file mode 100644 index 0000000..2e8d50d --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App/Base.lproj/Main.storyboard @@ -0,0 +1,926 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App/Info.plist b/integrations/Apple/Example_OSX_App/Example_OSX_App/Info.plist new file mode 100644 index 0000000..5717660 --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2016 ZeroTier Inc. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/integrations/Apple/Example_OSX_App/Example_OSX_App/ViewController.swift b/integrations/Apple/Example_OSX_App/Example_OSX_App/ViewController.swift new file mode 100644 index 0000000..9268d00 --- /dev/null +++ b/integrations/Apple/Example_OSX_App/Example_OSX_App/ViewController.swift @@ -0,0 +1,27 @@ +// +// ViewController.swift +// Example_OSX_App +// +// Created by Joseph Henry on 6/22/16. +// Copyright © 2016 ZeroTier Inc. All rights reserved. +// + +import Cocoa + +class ViewController: NSViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + override var representedObject: AnyObject? { + didSet { + // Update the view, if already loaded. + } + } + + +} + diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj index 88777be..b246454 100644 --- a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj +++ b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj @@ -120,7 +120,6 @@ 7CC0045E1D1316F5003E68DC /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003D11D121833003E68DC /* Http.cpp */; }; 7CC0045F1D1316F5003E68DC /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003D31D121833003E68DC /* OSUtils.cpp */; }; 7CC004601D1316F5003E68DC /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003D61D121833003E68DC /* PortMapper.cpp */; }; - 7CC004611D1316F5003E68DC /* RoutingTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003D81D121833003E68DC /* RoutingTable.cpp */; }; 7CC004621D131704003E68DC /* etharp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0039D1D1217F2003E68DC /* etharp.c */; }; 7CC004631D131704003E68DC /* ethernetif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0039E1D1217F2003E68DC /* ethernetif.c */; }; 7CC004641D131704003E68DC /* slipif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0039F1D1217F2003E68DC /* slipif.c */; }; @@ -1112,7 +1111,6 @@ 7CC0045E1D1316F5003E68DC /* Http.cpp in Sources */, 7CC0045F1D1316F5003E68DC /* OSUtils.cpp in Sources */, 7CC004601D1316F5003E68DC /* PortMapper.cpp in Sources */, - 7CC004611D1316F5003E68DC /* RoutingTable.cpp in Sources */, 7CC0043C1D1316BF003E68DC /* SDK_Debug.c in Sources */, 7CC0043D1D1316BF003E68DC /* SDK_EthernetTap.cpp in Sources */, 7CC0043E1D1316BF003E68DC /* SDK_Intercept.c in Sources */, diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate index 63bfc4a8efdeef49db15b06c4a49e9b954438782..bc557ffd8897077c4497896fc0b8ce14b5ab8b3a 100644 GIT binary patch delta 23492 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 t)6ofFuGW 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
    Uu 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 diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_OSX.xcscheme b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_OSX.xcscheme similarity index 100% rename from integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_OSX.xcscheme rename to integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_OSX.xcscheme diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme similarity index 100% rename from integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme rename to integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme similarity index 100% rename from integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme rename to integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_iOS.xcscheme b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_iOS.xcscheme similarity index 100% rename from integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierSDK_iOS.xcscheme rename to integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_iOS.xcscheme diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist index d7ccf77..373e0b2 100644 --- a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,22 +4,22 @@ SchemeUserState - ZeroTierSDK_OSX.xcscheme + ZeroTierSDK_OSX.xcscheme_^#shared#^_ orderHint 3 - ZeroTierSDK_Unity3D_OSX.xcscheme + ZeroTierSDK_Unity3D_OSX.xcscheme_^#shared#^_ orderHint 4 - ZeroTierSDK_Unity3D_iOS.xcscheme + ZeroTierSDK_Unity3D_iOS.xcscheme_^#shared#^_ orderHint 1 - ZeroTierSDK_iOS.xcscheme + ZeroTierSDK_iOS.xcscheme_^#shared#^_ orderHint 2 diff --git a/integrations/README.md b/integrations/README.md index 7f80b86..f4a3a95 100644 --- a/integrations/README.md +++ b/integrations/README.md @@ -3,18 +3,17 @@ ZeroTier Integrations If you want everything built at once, type `make all` and go play outside for a little while, we'll copy all of the targets into the `build` directory for you along with specific instructions on how to use each binary. -*NOTE for Apple platforms: For iOS/OSX Frameworks and Bundles to build, you will need XCode command line tools `xcode-select --install`* +*NOTE for Apple platforms: In order to build iOS/OSX Frameworks and Bundles you will need XCode command line tools `xcode-select --install`* *NOTE for Android: for Android JNI libraries to build you'll need to install [Android Studio](https://developer.android.com/studio/index.html) and the [Android NDK](https://developer.android.com/ndk/index.html), and you'll need to tell our project where you put it by putting the path in [this file](Android/proj/local.properties), if you don't have these things installed and configured we will detect that and just skip those builds automatically. Additionally, you can specify the target architectures you want to build in [Application.mk](Android/java/jni/Application.mk). By default it will build `arm64-v8a`, `armeabi`, `armeabi-v7a`, `mips`, `mips64`, `x86`, and `x86_64`* -Below are the specific instructions for each integration requiring little to no modification to your code. Remember, with a full build we'll put a copy of the appropriate integration instructions in the resultant binary's folder for you anyway. +Below are the specific instructions for each integration requiring *little to no modification to your code*. Remember, with a full build we'll put a copy of the appropriate integration instructions in the resultant binary's folder for you anyway. For more support on these integrations, or if you'd like help creating a new integration, stop by our [community section](https://www.zerotier.com/community/)! *** ## Current Integrations - ### Apple ##### iOS - [Embedding within an app](../docs/ios_zt_sdk.md) diff --git a/src/SDK_Sockets.c b/src/SDK_Sockets.c index 1cd18f0..4b50f9c 100644 --- a/src/SDK_Sockets.c +++ b/src/SDK_Sockets.c @@ -109,6 +109,7 @@ const char *get_netpath() { #endif #if defined(__IOS__) + /* api_netpath = "ZeroTier/One/nc_" + nwid; void *spec = pthread_getspecific(thr_id_key); @@ -122,6 +123,8 @@ const char *get_netpath() { return 1; } return 0; + */ + api_netpath = "ZeroTier/One/nc_e5cd7a9e1c3511dd"; #elif defined(__ANDROID__) api_netpath = "ZeroTier/One/nc_" + nwid;