You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Joseph Henry 77685abbdf removed references to shim 10 years ago
docs removed references to shim 10 years ago
ext updated 10 years ago
integrations removed references to shim 10 years ago
src removed references to shim 10 years ago
tests removed identities, network conf files, most name references 10 years ago
zerotierone@0b7adff086 documentation/API update 10 years ago
.gitignore updated gitignore 10 years ago
COPYING Rebuilt ZeroTierUnity-OSX bundle project 10 years ago
LICENSE.GPL-2 Rebuilt ZeroTierUnity-OSX bundle project 10 years ago
LICENSE.GPL-3 Rebuilt ZeroTierUnity-OSX bundle project 10 years ago
Makefile docker test update + makefile update 10 years ago
README.md updated docs 10 years ago
check.sh Updated build check script 10 years ago
make-liblwip.mk lwip debug adjustments to makefiles 10 years ago
make-linux.mk docker test makefile update 10 years ago
make-mac.mk updated docs 10 years ago
objects.mk Updated OSX makefile 10 years ago

README.md

ZeroTier SDK (alpha)

ZeroTier-enabled apps. Virtual network access embedded directly into applications and games.

What does it do?

Imagine starting an instance of your application or game and having it automatically be a member of your virtual network without having to rewrite your networking layer.

How is it used?

There are generally two ways one might want to use the service.

  • The first approach is a compile-time static linking of our service directly into your application. With this option you can bundle our entire functionality right into your app with no need to communicate with a service externally, it'll all be handled automatically. This is most typical for mobile applications, games, etc.

  • The second is a service-oriented approach where our network call "intercept" is dynamically-linked into your applications upon startup and will communicate to a single ZeroTier service on the host. This can be useful if you've already compiled your applications and can't perform a static linking.

Image

Build instructions

Check out our Integrations to learn how to integrate this into your application.

How does it work?

We've built a special background service that pairs the ZeroTier protocol with a user-space Lightweight IP (lwIP) stack to create a new way for you to bring your applications onto your virtual network. For a more in-depth explanation of our technology take a look at our SDK Primer

APIs

Hook/Intercept

  • Uses dynamic loading of our library to allow function interposition or "hooking" to re-implement traditional socket API functions like socket(), connect(), bind(), etc.

SOCKS5 Proxy

  • Provides an integrated SOCKS5 server alongside the ZeroTier service to proxy connections from an application to resources on a ZeroTier network. For instance, a developer which has built an iOS app using the NSStreams API could add ZeroTier to their application and simply use the SOCKS5 support build into NSStreams to reach resources on their network. An Android developer could do the same using the SOCKS5 support provided in the Socket API.

Direct Call

  • Directly call the zt_/zts_ API specified in SDK.h. For this to work, just use one of the provided headers that specify the interface for your system/architecture and then either dynamically-load our library into your app or compile it right in.

Changeling

  • This method is still experimental but the idea is to link libztkq.so into your app. You call start_changeling(). This will set up a separate thread to monitor all files for the process using kqueue. When an event is detected which indicates something is attempting to connect out or something is accepting a connection, we'll perform a sort of "hot-swap" of that socket for a socket that has been administered by ZeroTier.