name: zerotier
summary: Securely connect any device, anywhere.
description: |

  ZeroTier is a software-based managed Ethernet switch for planet Earth. Use it to connect your
  desktop clients, servers, phones, NAS, or even individual applications (using our SDK).

  This snap contains ZeroTier One, a service that provides ZeroTier network connectivity and
  makes joining virtual networks as easy as joining IRC or Slack channels. Apps for Android
  and iOS are available for free in the Google Play and Apple app stores.

  ZeroTier eliminates the LAN/WAN distinction and makes VPNs, tunnels, proxies, and other kludges
  arising from the inflexible nature of physical networks obsolete. Everything is encrypted
  end-to-end and traffic takes the most direct (peer to peer) path available.

  Install (be sure to use sudo)

    sudo snap install zerotier

  Join your network

    sudo zerotier join <nwid>
    sudo zerotier status

  Approve your new node in ZeroTier Central (https://my.zerotier.com)! Welcome online!

adopt-info: one
confinement: strict
grade: stable
base: core18

apps:
  one:
    # Add -U to prevent attempting to drop privileges since snaps have their
    # own containment mechanism. Otherwise, if a user named "zerotier-one"
    # exists on the system, the setgid or related calls will fail.
    command: usr/sbin/zerotier-one -U
    daemon: simple
    plugs:
      - network
      - network-bind
      - network-control

  # For backwards compatibility with old package (e.g. zerotier.cli)
  # Should be removed someday
  cli:
    command: usr/sbin/zerotier-cli
    plugs:
      - network

  zerotier:
    command: usr/sbin/zerotier-cli
    plugs:
      - network

  idtool:
    command: usr/sbin/zerotier-idtool
    plugs:
      - network

layout:
  /var/lib/zerotier-one:
    bind: $SNAP_COMMON

parts:
  one:
    plugin: make
    source: https://github.com/zerotier/zerotierone.git
    source-branch: "master"
    build-packages:
      - build-essential
      - libc++-dev
    make-parameters:
      - ZT_SSO_SUPPORTED=0
    filesets:
      binaries:
        - usr/sbin/zerotier-one
        - usr/sbin/zerotier-cli
        - usr/sbin/zerotier-idtool
    prime:
      - $binaries
    override-build: |
      snapcraftctl build
      # Grab the version string from the newly-compiled binary.
      snapcraftctl set-version "$(./zerotier-one -v)"
slots:
  zerotier-control:
    interface: content
    read:
      - $SNAP_COMMON