Code Monkey home page Code Monkey logo

libzt's Introduction

ZeroTier Sockets

Part of the ZeroTier SDK

P2P cross-platform encrypted sockets library using ZeroTier


Examples | Docs | Report an issue

@zerotier r/zerotier

latest libzt version Last Commit Build Status (master branch)

Language/Platform Install Version Example
C/C++ Build from source version C/C++
C# Install-Package ZeroTier.Sockets C#
Python pip install libzt Python
Rust See: crates.io/crates/libzt version Rust
Java Install JDK, then: ./build.sh host-jar Java
Linux brew install zerotier/tap/libzt version C/C++
macOS brew install zerotier/tap/libzt version C/C++
iOS / iPadOS ./build.sh iphoneos-framework Objective-C, Swift
Android ./build.sh android-aar Java

#include "ZeroTierSockets.h"

int main()
{
    zts_node_start();
    zts_net_join(net_id);
    int fd = zts_bsd_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0);
    zts_bsd_connect(fd, ...);
    ...
}

Build from source (optional)

git submodule update --init

This project uses CMake as a build system generator. The scripts build.* simplify building and packaging for various targets. There are many targets and configurations not mentioned here.

Platform Build instructions Notes
Linux ./build.sh host "release" build.sh
macOS ./build.sh host "release" build.sh
Windows . .\build.ps1; Build-Host -BuildType "Release" -Arch "x64" build.ps1, Requires PowerShell

Using the host keyword will automatically detect the current machine type and build standard libzt for use in C/C++ (no additional language bindings.) See ./build.sh list for additional target options. libzt depends on cURL for the optional portion of the API that interfaces with our hosted web offering (my.zerotier.com). If you do not need this functionality you can omit it by passing -DZTS_DISABLE_CENTRAL_API=1 to CMake.

Example output:

~/libzt/dist/macos-x64-host-release
├── bin
│   ├── client
│   ├── server
│   └── ...
└── lib
    ├── libzt.a
    └── libzt.dylib

Important directories:

Directory Purpose
dist Contains finished targets (libraries, binaries, packages, etc.)
cache Contains build system caches that can safely be deleted after use.
pkg Contains project, script and spec files to generate packages.

Self-hosting

If you'd like to use your own infrastructure we make it easy to set up your own controllers and roots.

Help

Licensing

ZeroTier and the ZeroTier SDK (libzt and libztcore) are licensed under the BSL version 1.1. ZeroTier is free to use internally in businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a SaaS service require a commercial license. A small amount of third party code is also included in ZeroTier and is not subject to our BSL license. See AUTHORS.md for a list of third party code, where it is included, and the licenses that apply to it. All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.). If you want a commercial license to use the ZeroTier SDK in your product contact us directly via [email protected]

libzt's People

Contributors

joseph-henry avatar bostick avatar github-actions[bot] avatar evan-olcott avatar heri16 avatar gdamore avatar stephencwills avatar janjaapbos avatar linsomniac avatar laduke avatar bostonrwalker avatar 04041b avatar lunuxl avatar glebm avatar rcoder avatar pmajumdar-ixia avatar podcast-studio-development avatar fecaridade avatar adamierymenko avatar germanaizek avatar lann avatar troy-f avatar psarna avatar someara avatar mgrddsj avatar dependabot[bot] avatar janvanbouwel avatar rossmc7 avatar

Forkers

cong0707

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.