Skip to content

brandonlehmann/libzt

 
 

Repository files navigation

libzt

Library version of ZeroTier


libzt makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. We provide a socket-like API supporting SOCK_STREAM, SOCK_DGRAM, and SOCK_RAW. There's no need for system-wide virtual interfaces. This connection is exclusive to your app and fully encrypted via the Salsa20 cipher. For a more in-depth discussion on the technical side of ZeroTier, check out our Manual


irc

Platform Static Shared Package Example project/code Library build instructions
macOS libzt.a libzt.dylib see below
iOS libzt.a zt.framework examples/swift packages/iOS
Windows libzt.lib (x86), libzt.lib (x64) libzt.dll (x86), libzt.dll (x64) examples/cpp/ExampleWindowsCppApp, examples/csharp/ExampleWindowsCSharpApp see below
Android libzt.aar examples/android/ExampleAndroidApp packages/android
Linux see below see below see below

C API: libzt.h Java JNI API: ZeroTier.java


C++ Example

#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#include "libzt.h"

int main() 
{
	char *str = "welcome to the machine";
	char *remoteIp = "10.8.8.42";
	int remotePort = 8080;
	int fd, err = 0;
	struct sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = inet_addr(remoteIp);
	addr.sin_port = htons(remotePort);

	zts_startjoin("path", 0xc7cd7c981b0f52a2); // config path, network ID

	if ((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
		printf("error creating socket\n");
	}
	if ((err = zts_connect(fd, (const struct sockaddr *)&addr, sizeof(addr))) < 0) {
		printf("error connecting to remote host\n");
	}
	if ((err = zts_write(fd, str, strlen(str))) < 0) {
		printf("error writing to socket\n");
	}

	zts_close(fd);
	zts_stop();
	return 0;
}

For an example using only the Virtual Layer 2, see examples/layer2


Build

We recommend using CMake and clang.

git submodule update --init && make patch
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release

or possibly:

cmake -H. -Bbuild --config Release

Then

cmake --build build 

Builds are placed in bin\lib


Commercial License

If you want a commercial license to use libzt in your product contact us directly via [email protected]

About

Library version of ZeroTier

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 80.2%
  • C 10.1%
  • Java 3.2%
  • CMake 2.3%
  • Python 2.2%
  • Shell 1.3%
  • Other 0.7%