diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 000000000..eae15501b --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,40 @@ +local registry = "084037375216.dkr.ecr.us-east-2.amazonaws.com"; + +local targets = [ + { "os": "linux", "name": "sid", "isas": [ "386", "armv7", "amd64", "arm64", "mips64le", "ppc64le", "s390x", "riscv64" ], "events": [ "push", "tag", "custom" ] }, +]; + +local Build(platform, os, isa, events) = { + "kind": "pipeline", + "type": "docker", + "pull": "always", + "name": platform + " " + isa + " " + "build", + "clone": { "depth": 1 }, + "steps": [ + { + "name": "build", + "image": registry + "/honda-builder", + "commands": [ + "aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin " + registry, + "./ci/scripts/build.sh " + platform + " " + isa + " " + "100.0.0+${DRONE_COMMIT_SHA:0:8}" + " " + "${DRONE_BUILD_EVENT}" + ] + }, + // { + // "name": "list", + // "image": registry + "/honda-builder", + // "commands": [ "ls -la " + platform ] + // }, + ], + [ if isa == "arm64" || isa == "armv7" then "platform" ]: { os: os, arch: "arm64" }, + "trigger": { "event": events } +}; + +// puttin on the bits + +std.flattenArrays([ + [ + Build(p.name, p.os, isa, p.events) + for isa in p.isas + ] + for p in targets +]) diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 000000000..fc7643d45 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,158 @@ +--- +clone: + depth: 1 +kind: pipeline +name: sid 386 build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid 386 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid armv7 build +platform: + arch: arm64 + os: linux +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid armv7 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid amd64 build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid amd64 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid arm64 build +platform: + arch: arm64 + os: linux +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid arm64 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid mips64le build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid mips64le 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid ppc64le build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid ppc64le 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid s390x build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid s390x 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker +--- +clone: + depth: 1 +kind: pipeline +name: sid riscv64 build +pull: always +steps: +- commands: + - aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin + 084037375216.dkr.ecr.us-east-2.amazonaws.com + - ./ci/scripts/build.sh sid riscv64 100.0.0+${DRONE_COMMIT_SHA:0:8} ${DRONE_BUILD_EVENT} + image: 084037375216.dkr.ecr.us-east-2.amazonaws.com/honda-builder + name: build +trigger: + event: + - push + - tag + - custom +type: docker diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..5caa9283e --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +export CARGO_NET_GIT_FETCH_WITH_CLI := true +export RUST_BACKTRACE := full + +all: test build + +test: + @echo "running cargo test" + ${HOME}/.cargo/bin/cargo test -v + +build: + @echo "running cargo build" + ${HOME}/.cargo/bin/cargo build -v + +drone: + @echo "rendering .drone.yaml from .drone.jsonnet" + drone jsonnet --format --stream + +munge_rpm: + @:$(call check_defined, VERSION) + @echo "Updating rpm spec to $(VERSION)" + ci/scripts/munge_rpm_spec.sh zerotier-one.spec $(VERSION) "Adam Ierymenko " "see https://github.com/zerotier/ZeroTierOne for release notes" + +munge_deb: + @:$(call check_defined, VERSION) + @echo "Updating debian/changelog to $(VERSION)" + ci/scripts/munge_debian_changelog.sh debian/changelog $(VERSION) "Adam Ierymenko " "see https://github.com/zerotier/ZeroTierOne for release notes" + +debian: FORCE + debuild --no-lintian -I -i -us -uc -nc -b + +debian-clean: FORCE + rm -rf debian/files debian/zerotier-one*.debhelper debian/zerotier-one.substvars debian/*.log debian/zerotier-one debian/.debhelper debian/debhelper-build-stamp + +redhat: FORCE + rpmbuild --target `rpm -q bash --qf "%{arch}"` -ba zerotier-one.spec + +FORCE: diff --git a/ci/Dockerfile.deb b/ci/Dockerfile.deb new file mode 100644 index 000000000..151bca397 --- /dev/null +++ b/ci/Dockerfile.deb @@ -0,0 +1,10 @@ +ARG PLATFORM +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage +WORKDIR /work/build +COPY . . +RUN make debian +RUN ls -ls /work + +FROM scratch AS export +ARG PLATFORM +COPY --from=stage /work/*.deb ./${PLATFORM}/ diff --git a/ci/Dockerfile.el6 b/ci/Dockerfile.el6 new file mode 100644 index 000000000..46ba13c42 --- /dev/null +++ b/ci/Dockerfile.el6 @@ -0,0 +1,36 @@ +ARG DOCKER_ARCH +FROM --platform=linux/${DOCKER_ARCH} alpine:edge AS builder + +RUN apk update +RUN apk add curl +RUN apk add bash +RUN apk add file +RUN apk add rust +RUN apk add cargo +RUN apk add make +RUN apk add cmake +RUN apk add clang +RUN apk add openssl-dev +RUN apk add linux-headers +RUN apk add build-base +RUN apk add openssl-libs-static + +COPY . . +RUN ZT_STATIC=1 make one +RUN ls -la + +ARG DOCKER_ARCH +FROM --platform=linux/${DOCKER_ARCH} centos:6 AS stage +WORKDIR /root/rpmbuild/BUILD +COPY . . +COPY --from=builder zerotier-one ./ +RUN curl https://gist.githubusercontent.com/someara/b363002ba6e57b3c474dd027d4daef85/raw/4ac5534139752fc92fbe1a53599a390214f69615/el6%2520vault --output /etc/yum.repos.d/CentOS-Base.repo +RUN uname -a +RUN yum -y install make gcc rpm-build +RUN pwd +RUN ls -la +RUN make redhat + +FROM scratch AS export +ARG PLATFORM +COPY --from=stage /root/rpmbuild/RPMS/*/*.rpm ./${PLATFORM}/ diff --git a/ci/Dockerfile.none b/ci/Dockerfile.none new file mode 100644 index 000000000..bee0128f7 --- /dev/null +++ b/ci/Dockerfile.none @@ -0,0 +1,5 @@ +ARG PLATFORM +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage +WORKDIR /work +COPY . . +RUN make diff --git a/ci/Dockerfile.rpm b/ci/Dockerfile.rpm new file mode 100644 index 000000000..0965148bc --- /dev/null +++ b/ci/Dockerfile.rpm @@ -0,0 +1,9 @@ +ARG PLATFORM +FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage +WORKDIR /root/rpmbuild/BUILD +COPY . . +RUN make redhat + +FROM scratch AS export +ARG PLATFORM +COPY --from=stage /root/rpmbuild/RPMS/*/*.rpm ./${PLATFORM}/ diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh new file mode 100755 index 000000000..bc28e42f2 --- /dev/null +++ b/ci/scripts/build.sh @@ -0,0 +1,126 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +export PLATFORM=$1 +export ZT_ISA=$2 +export VERSION=$3 +export EVENT=$4 + +case $PLATFORM in + sid) + export PKGFMT=none + ;; + el*|fc*|amzn*) + export PKGFMT=rpm + ;; + *) + export PKGFMT=deb +esac + +# +# Allow user to drop in custom Dockerfile for PLATFORM +# + +if [ -f "ci/Dockerfile.${PLATFORM}" ]; then + export DOCKERFILE="ci/Dockerfile.${PLATFORM}" +else + export DOCKERFILE="ci/Dockerfile.${PKGFMT}" +fi + +# +# Rust sometimes gets confused about where it's running. +# Normally, the build images will have Rust pre-baked. +# Pass RUST_TRIPLET for convenience when using a custom Dockerfile +# + +case $ZT_ISA in + 386) + export DOCKER_ARCH=386 + export RUST_TRIPLET=i686-unknown-linux-gnu + ;; + amd64) + export DOCKER_ARCH=amd64 + export RUST_TRIPLET=x86_64-unknown-linux-gnu + ;; + armv7) + export DOCKER_ARCH=arm/v7 + export RUST_TRIPLET=armv7-unknown-linux-gnueabihf + ;; + arm64) + export DOCKER_ARCH=arm64/v8 + export RUST_TRIPLET=aarch64-unknown-linux-gnu + ;; + riscv64) + export DOCKER_ARCH=riscv64 + export RUST_TRIPLET=riscv64gc-unknown-linux-gnu + ;; + ppc64le) + export DOCKER_ARCH=ppc64le + export RUST_TRIPLET=powerpc64le-unknown-linux-gnu + ;; + mips64le) + export DOCKER_ARCH=mips64le + export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64 + ;; + s390x) + export DOCKER_ARCH=s390x + export RUST_TRIPLET=s390x-unknown-linux-gnu + ;; + *) + echo "ERROR: could not determine architecture settings. PLEASE FIX ME" + exit 1 + ;; +esac + +# +# Print debug info +# + +echo "#~~~~~~~~~~~~~~~~~~~~" +echo "$0 variables:" +echo "nproc: $(nproc)" +echo "ZT_ISA: ${ZT_ISA}" +echo "DOCKER_ARCH: ${DOCKER_ARCH}" +echo "RUST_TRIPLET: ${RUST_TRIPLET}" +echo "VERSION: ${VERSION}" +echo "EVENT: ${EVENT}" +echo "PKGFMT: ${PKGFMT}" +echo "PWD: ${PWD}" +echo "DOCKERFILE: ${DOCKERFILE}" +echo "#~~~~~~~~~~~~~~~~~~~~" + +# +# Munge RPM and Deb +# + +if [ ${PKGFMT} != "none" ] && [ ${EVENT} != "tag" ]; then + make munge_rpm zerotier-one.spec VERSION=${VERSION} + make munge_deb debian/changelog VERSION=${VERSION} +fi + +# +# Assemble buildx arguments +# + +build_args=( + --no-cache + --build-arg PLATFORM=${PLATFORM} + --build-arg RUST_TRIPLET=${RUST_TRIPLET} + --build-arg DOCKER_ARCH=${DOCKER_ARCH} + --platform linux/${DOCKER_ARCH} + -f ${DOCKERFILE} + -t build + . +) + +if [ ${PKGFMT} != "none" ]; then + build_args+=("--output type=local,dest=.") + build_args+=("--target export") +fi + +# +# Do build +# + +docker buildx build ${build_args[@]} diff --git a/ci/scripts/munge_debian_changelog.sh b/ci/scripts/munge_debian_changelog.sh new file mode 100755 index 000000000..86cedf72c --- /dev/null +++ b/ci/scripts/munge_debian_changelog.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +export FILE=$1 +export VERSION=$2 +export NAME=$3 +export MESSAGE=$4 +export DATE=$(date "+%a, %d %b %Y %T %z") +# export DATE=$(date "+%a %b %d %Y") + +set +e +grep --version | grep BSD &> /dev/null +if [ $? == 0 ]; then BSDGREP=true ; else BSDGREP=false ; fi +set -e + +# echo "#~~~~~~~~~~~~~~~~~~~~" +# echo "$0 variables:" +# echo "VERSION: ${VERSION}" +# echo "NAME: ${NAME}" +# echo "MESSAGE: ${MESSAGE}" +# echo "DATE: ${DATE}" +# echo "BSDGREP: ${BSDGREP}" +# echo "#~~~~~~~~~~~~~~~~~~~~" +# echo + +if $BSDGREP ; then + sed -i '' s/^Version:.*/"Version: ${VERSION}"/ ${FILE} +else + sed -i s/^Version:.*/"Version: ${VERSION}"/ ${FILE} +fi + +awk -v version=${VERSION} -v date=${DATE} -v name=${NAME} -v message=${MESSAGE} \ + 'BEGIN{print "zerotier-one (" version ") unstable; urgency=medium\n\n * " message "\n\n -- " name " " date "\n" }{ print }' \ + ${FILE} > ${FILE}.new + +mv ${FILE}.new ${FILE} diff --git a/ci/scripts/munge_rpm_spec.sh b/ci/scripts/munge_rpm_spec.sh new file mode 100755 index 000000000..289df1ed4 --- /dev/null +++ b/ci/scripts/munge_rpm_spec.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +export FILE=$1 +export VERSION=$2 +export NAME=$3 +export MESSAGE=$4 +export DATE=$(date "+%a %b %d %Y") + +set +e +grep --version | grep BSD &> /dev/null +if [ $? == 0 ]; then BSDGREP=true ; else BSDGREP=false ; fi +set -e + +# echo "#~~~~~~~~~~~~~~~~~~~~" +# echo "$0 variables:" +# echo "VERSION: ${VERSION}" +# echo "NAME: ${NAME}" +# echo "MESSAGE: ${MESSAGE}" +# echo "DATE: ${DATE}" +# echo "BSDGREP: ${BSDGREP}" +# echo "#~~~~~~~~~~~~~~~~~~~~" +# echo + +if $BSDGREP ; then + sed -i '' s/^Version:.*/"Version: ${VERSION}"/ ${FILE} +else + sed -i s/^Version:.*/"Version: ${VERSION}"/ ${FILE} +fi + +awk -v version=${VERSION} -v date=${DATE} -v name=${NAME} -v message=${MESSAGE} \ + 'FNR==NR{ if (/%changelog/) p=NR; next} 1; FNR==p{ print "* " date " " name " - " version "\n- " message "\n" }' \ + ${FILE} ${FILE} > ${FILE}.new + +mv ${FILE}.new ${FILE} diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 000000000..dcc312250 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,258 @@ +zerotier-one (1.10.2) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Thu, 13 Oct 2022 01:00:00 -0700 + +zerotier-one (1.10.1) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 27 Jun 2022 01:00:00 -0700 + +zerotier-one (1.10.0) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Fri, 03 Jun 2022 01:00:00 -0700 + +zerotier-one (1.8.10) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Tue, 10 May 2022 01:00:00 -0700 + +zerotier-one (1.8.9) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 25 Apr 2022 01:00:00 -0700 + +zerotier-one (1.8.8) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 11 Apr 2022 01:00:00 -0700 + +zerotier-one (1.8.7) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 21 Mar 2022 01:00:00 -0700 + +zerotier-one (1.8.6) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 07 Mar 2022 01:00:00 -0700 + +zerotier-one (1.8.5) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Fri, 17 Dec 2021 01:00:00 -0700 + +zerotier-one (1.8.4) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 23 Nov 2021 01:00:00 -0700 + +zerotier-one (1.8.3) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 15 Nov 2021 01:00:00 -0700 + +zerotier-one (1.8.2) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 08 Nov 2021 01:00:00 -0700 + +zerotier-one (1.8.1) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Wed, 20 Oct 2021 01:00:00 -0700 + +zerotier-one (1.8.0) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Wed, 15 Sep 2021 01:00:00 -0700 + +zerotier-one (1.6.6) unstable; urgency=medium + + * Backport endpoint mitigation against address collision attack. + + -- Adam Ierymenko Tue, 21 Sep 2021 01:00:00 -0700 + +zerotier-one (1.6.5) unstable; urgency=medium + + * Fix path filtering bug that could cause "software laser" effect. + * Fix printf overflow in CLI (not exploitable or security related) + * Fix Windows device enumeration issue. + + -- Adam Ierymenko Tue, 13 Apr 2021 01:00:00 -0700 + +zerotier-one (1.6.4) unstable; urgency=medium + + * REALLY fix a problem causing nodes to go into a "coma" with some network configurations. + + -- Adam Ierymenko Tue, 15 Feb 2021 01:00:00 -0700 + +zerotier-one (1.6.3-1) unstable; urgency=medium + + * Fix a problem causing nodes to go into a "coma" with some network configurations. + + -- Adam Ierymenko Tue, 02 Feb 2021 01:00:00 -0700 + +zerotier-one (1.6.2-2) unstable; urgency=medium + + * This is a minor update to the 1.6.2 package to address issues with + running on ARMv6 CPUs like the Raspberry Pi Zero and original v1 Pi. + + -- Adam Ierymenko Tue, 31 Nov 2020 01:00:00 -0700 + +zerotier-one (1.6.2) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 30 Nov 2020 01:00:00 -0700 + +zerotier-one (1.6.1) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Tue, 24 Nov 2020 01:00:00 -0700 + +zerotier-one (1.6.0) unstable; urgency=medium + + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Thu, 19 Nov 2020 01:00:00 -0700 + +zerotier-one (1.5.0) unstable; urgency=medium + + * Version 1.5.0 is actually 1.6.0-beta1 + * See RELEASE-NOTES.md for release notes. + + -- Adam Ierymenko Mon, 05 Aug 2020 01:00:00 -0700 + +zerotier-one (1.4.6) unstable; urgency=medium + + * Update default root server list + * Fix build flags on "armhf" (32-bit ARM) platforms for better + compatibility with Pi Zero and other devices. + * Fix license text in one.cpp. + * Add a clarification to LICENSE.txt. + + -- Adam Ierymenko Fri, 30 Aug 2019 01:00:00 -0700 + +zerotier-one (1.4.4) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + * License changed to BSL 1.1 + + -- Adam Ierymenko Fri, 23 Aug 2019 01:00:00 -0700 + +zerotier-one (1.4.2-2) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + * This is a new build that fixes a binary build issue with containers and SELinux + + -- Adam Ierymenko Thu, 04 Aug 2019 01:00:00 -0700 + +zerotier-one (1.4.2) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Thu, 04 Aug 2019 01:00:00 -0700 + +zerotier-one (1.4.0) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Thu, 29 Jul 2019 01:00:00 -0700 + +zerotier-one (1.2.12) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 25 Jul 2018 01:00:00 -0700 + +zerotier-one (1.2.10) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 08 May 2018 01:00:00 -0700 + +zerotier-one (1.2.8) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 27 Apr 2018 01:00:00 -0700 + +zerotier-one (1.2.6) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 17 Apr 2018 01:00:00 -0700 + +zerotier-one (1.2.4) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Mon, 24 Mar 2017 01:00:00 -0700 + +zerotier-one (1.2.2) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Fri, 17 Mar 2017 01:00:00 -0700 + +zerotier-one (1.2.0) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 14 Mar 2017 09:08:00 -0700 + +zerotier-one (1.1.14) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 21 Jul 2016 07:14:12 -0700 + +zerotier-one (1.1.12) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Tue, 12 Jul 2016 03:02:22 -0700 + +zerotier-one (1.1.10) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + * ZeroTier Debian packages no longer depend on http-parser since its ABI is too unstable. + + -- Adam Ierymenko Tue, 12 Jul 2016 12:29:00 -0700 + +zerotier-one (1.1.8) unstable; urgency=low + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Fri, 08 Jul 2016 01:56:00 -0700 + +zerotier-one (1.1.6) unstable; urgency=medium + + * First Debian release on ZeroTier, Inc. private apt repository. + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko Fri, 24 Jun 2016 10:00:00 -0700 + +zerotier-one (1.1.5) UNRELEASED; urgency=medium + + * Development package -- first clean Debian packaging test. + + -- Adam Ierymenko Wed, 08 Jun 2016 10:05:01 -0700 diff --git a/debian/compat b/debian/compat new file mode 100644 index 000000000..301160a93 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/debian/control b/debian/control new file mode 100644 index 000000000..c7bfa47ab --- /dev/null +++ b/debian/control @@ -0,0 +1,19 @@ +Source: zerotier-one +Maintainer: Adam Ierymenko +Section: net +Priority: optional +Standards-Version: 3.9.6 +Build-Depends: debhelper (>= 9) +Vcs-Git: git://github.com/zerotier/ZeroTierOne +Vcs-Browser: https://github.com/zerotier/ZeroTierOne +Homepage: https://www.zerotier.com/ + +Package: zerotier-one +Architecture: any +Depends: iproute2, adduser, libstdc++6 (>= 5), openssl +Homepage: https://www.zerotier.com/ +Description: ZeroTier network virtualization service + ZeroTier One lets you join ZeroTier virtual networks and + have them appear as tun/tap ports on your system. See + https://www.zerotier.com/ for instructions and + documentation. diff --git a/debian/control.wheezy b/debian/control.wheezy new file mode 100644 index 000000000..a8e240847 --- /dev/null +++ b/debian/control.wheezy @@ -0,0 +1,19 @@ +Source: zerotier-one +Maintainer: Adam Ierymenko +Section: net +Priority: optional +Standards-Version: 3.9.4 +Build-Depends: debhelper +Vcs-Git: git://github.com/zerotier/ZeroTierOne +Vcs-Browser: https://github.com/zerotier/ZeroTierOne +Homepage: https://www.zerotier.com/ + +Package: zerotier-one +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, iproute, libstdc++6 +Homepage: https://www.zerotier.com/ +Description: ZeroTier network virtualization service + ZeroTier One lets you join ZeroTier virtual networks and + have them appear as tun/tap ports on your system. See + https://www.zerotier.com/ for instructions and + documentation. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 000000000..d22affa29 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,18 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: zerotier-one +Source: https://github.com/zerotier/ZeroTierOne + +Files: * +Copyright: 2011-2016 ZeroTier, Inc. +License: ZeroTier BSL 1.1 + +License: ZeroTier BSL 1.1 + Copyright (c)2019 ZeroTier, Inc. + + Use of this software is governed by the Business Source License included + in the LICENSE.TXT file in the project's root directory. + + Change Date: 2025-01-01 + + On the date above, in accordance with the Business Source License, use + of this software will be governed by version 2.0 of the Apache License. diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 000000000..b6e7471c4 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,11 @@ +#!/bin/sh -e + +case "$1" in + configure) + if ! id zerotier-one >>/dev/null 2>&1; then + useradd --system --user-group --home-dir /var/lib/zerotier-one --shell /usr/sbin/nologin --no-create-home zerotier-one + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/rules b/debian/rules new file mode 100755 index 000000000..81fde680b --- /dev/null +++ b/debian/rules @@ -0,0 +1,16 @@ +#!/usr/bin/make -f + +CFLAGS=-O3 -fstack-protector-strong +CXXFLAGS=-O3 -fstack-protector-strong + +%: + dh $@ --with systemd + +override_dh_auto_build: + make + +override_dh_systemd_start: + dh_systemd_start --restart-after-upgrade + +override_dh_installinit: + dh_installinit --name=zerotier-one -- defaults diff --git a/debian/rules.static b/debian/rules.static new file mode 100644 index 000000000..72c529552 --- /dev/null +++ b/debian/rules.static @@ -0,0 +1,16 @@ +#!/usr/bin/make -f + +CFLAGS=-O3 -fstack-protector-strong +CXXFLAGS=-O3 -fstack-protector-strong + +%: + dh $@ --with systemd + +override_dh_auto_build: +# make -j 2 + +override_dh_systemd_start: + dh_systemd_start --restart-after-upgrade + +override_dh_installinit: + dh_installinit --name=zerotier-one -- defaults diff --git a/debian/rules.wheezy b/debian/rules.wheezy new file mode 100755 index 000000000..55e2647a2 --- /dev/null +++ b/debian/rules.wheezy @@ -0,0 +1,11 @@ +#!/usr/bin/make -f + +CFLAGS=-O3 -fstack-protector +CXXFLAGS=-O3 -fstack-protector + +%: + dh $@ + +override_dh_auto_build: + make -j 2 + diff --git a/debian/rules.wheezy.static b/debian/rules.wheezy.static new file mode 100644 index 000000000..0165be37e --- /dev/null +++ b/debian/rules.wheezy.static @@ -0,0 +1,11 @@ +#!/usr/bin/make -f + +CFLAGS=-O3 -fstack-protector +CXXFLAGS=-O3 -fstack-protector + +%: + dh $@ + +override_dh_auto_build: +# make -j 2 + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 000000000..46ebe0266 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) \ No newline at end of file diff --git a/debian/ufw-zerotier-one b/debian/ufw-zerotier-one new file mode 100644 index 000000000..7c2908941 --- /dev/null +++ b/debian/ufw-zerotier-one @@ -0,0 +1,4 @@ +[zerotier-one] +title=ZeroTier One +description=A planetary Ethernet switch +ports=9993/udp diff --git a/debian/zerotier-one.init b/debian/zerotier-one.init new file mode 100644 index 000000000..41a22a50d --- /dev/null +++ b/debian/zerotier-one.init @@ -0,0 +1,49 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: zerotier-one +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: ZeroTier One network virtualization service +### END INIT INFO + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +DESC="zerotier-one daemon" +NAME=zerotier-one +DAEMON=/usr/sbin/zerotier-one +PIDFILE=/var/lib/zerotier-one/zerotier-one.pid +SCRIPTNAME=/etc/init.d/"$NAME" +EXTRA_OPTS=-d + +test -f $DAEMON || exit 0 + +. /lib/lsb/init-functions + +case "$1" in +start) log_daemon_msg "Starting ZeroTier One" "zerotier-one" + start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS + log_end_msg $? + ;; +stop) log_daemon_msg "Stopping ZeroTier One" "zerotier-one" + killproc -p $PIDFILE $DAEMON + RETVAL=$? + [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE + log_end_msg $RETVAL + ;; +restart) log_daemon_msg "Restarting ZeroTier One" "zerotier-one" + $0 stop + $0 start + ;; +reload|force-reload) log_daemon_msg "Reloading ZeroTier One" "zerotier-one" + log_end_msg 0 + ;; +status) + status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? + ;; +*) log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}" + exit 2 + ;; +esac +exit 0 diff --git a/debian/zerotier-one.service b/debian/zerotier-one.service new file mode 100644 index 000000000..9d6a21b0a --- /dev/null +++ b/debian/zerotier-one.service @@ -0,0 +1,12 @@ +[Unit] +Description=ZeroTier One +After=network-online.target network.target +Wants=network-online.target + +[Service] +ExecStart=/usr/sbin/zerotier-one +Restart=always +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/debian/zerotier-one.upstart b/debian/zerotier-one.upstart new file mode 100644 index 000000000..7753580a8 --- /dev/null +++ b/debian/zerotier-one.upstart @@ -0,0 +1,14 @@ +description "ZeroTier One upstart startup script" + +author "Adam Ierymenko " + +start on (local-filesystems and net-device-up IFACE!=lo) +stop on runlevel [!2345] + +respawn +respawn limit 2 300 + +#pre-start script +#end script + +exec /usr/sbin/zerotier-one diff --git a/zerotier-one.spec b/zerotier-one.spec new file mode 100644 index 000000000..86fe7d0d8 --- /dev/null +++ b/zerotier-one.spec @@ -0,0 +1,237 @@ +Name: zerotier-one +Version: 1.10.2 +Release: 1%{?dist} +Summary: ZeroTier network virtualization service + +License: ZeroTier BSL 1.1 +URL: https://www.zerotier.com + +# Fedora + +%if "%{?dist}" == ".fc35" +BuildRequires: systemd clang openssl openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".fc36" +BuildRequires: systemd clang openssl1.1 openssl1.1-devel +Requires: systemd openssl1.1 +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".fc37" +BuildRequires: systemd clang openssl1.1 openssl1.1-devel +Requires: systemd openssl1.1 +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +# RHEL + +%if "%{?dist}" == ".el6" +Requires: chkconfig +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".el7" +BuildRequires: systemd openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".el8" +BuildRequires: systemd openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".el9" +BuildRequires: systemd openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +# Amazon + +%if "%{?dist}" == ".amzn2" +BuildRequires: systemd openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%if "%{?dist}" == ".amzn2022" +BuildRequires: systemd openssl-devel +Requires: systemd openssl +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +%endif + +%description +ZeroTier is a software defined networking layer for Earth. + +It can be used for on-premise network virtualization, as a peer to peer VPN +for mobile teams, for hybrid or multi-data-center cloud deployments, or just +about anywhere else secure software defined virtual networking is useful. + +This is our OS-level client service. It allows Mac, Linux, Windows, +FreeBSD, and soon other types of clients to join ZeroTier virtual networks +like conventional VPNs or VLANs. It can run on native systems, VMs, or +containers (Docker, OpenVZ, etc.). + +%prep +%if "%{?dist}" != ".el6" +rm -rf BUILD BUILDROOT RPMS SRPMS SOURCES +ln -s %{getenv:PWD} %{name}-%{version} +mkdir -p SOURCES +tar --exclude=%{name}-%{version}/.git --exclude=%{name}-%{version}/%{name}-%{version} -czf SOURCES/%{name}-%{version}.tar.gz %{name}-%{version}/* +rm -f %{name}-%{version} +cp -a %{getenv:PWD}/* . +%endif + +%build +%if "%{?dist}" != ".el6" +make ZT_USE_MINIUPNPC=1 %{?_smp_mflags} one +%endif + +%pre +/usr/bin/getent passwd zerotier-one || /usr/sbin/useradd -r -d /var/lib/zerotier-one -s /sbin/nologin zerotier-one + +%install +%if "%{?dist}" != ".el6" +make install DESTDIR=$RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +cp %{getenv:PWD}/debian/zerotier-one.service $RPM_BUILD_ROOT%{_unitdir}/%{name}.service +%else +rm -rf $RPM_BUILD_ROOT +pushd %{getenv:PWD} +make install DESTDIR=$RPM_BUILD_ROOT +popd +mkdir -p $RPM_BUILD_ROOT/etc/init.d +cp %{getenv:PWD}/ext/installfiles/linux/zerotier-one.init.rhel6 $RPM_BUILD_ROOT/etc/init.d/zerotier-one +chmod 0755 $RPM_BUILD_ROOT/etc/init.d/zerotier-one +%endif + +%files +%{_sbindir}/* +%{_mandir}/* +%{_localstatedir}/* + +%if 0%{?rhel} && 0%{?rhel} <= 6 +/etc/init.d/zerotier-one +%else +%{_unitdir}/%{name}.service +%endif + +%post +%if ! 0%{?rhel} && 0%{?rhel} <= 6 +%systemd_post zerotier-one.service +%endif + +%preun +%if ! 0%{?rhel} && 0%{?rhel} <= 6 +%systemd_preun zerotier-one.service +%endif + +%postun +%if ! 0%{?rhel} && 0%{?rhel} <= 6 +%systemd_postun_with_restart zerotier-one.service +%endif + +%changelog +* Mon Oct 13 2022 Adam Ierymenko - 1.10.2 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Jun 27 2022 Adam Ierymenko - 1.10.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Fri Jun 03 2022 Adam Ierymenko - 1.10.0 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue May 10 2022 Adam Ierymenko - 1.8.10 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Apr 25 2022 Adam Ierymenko - 1.8.9 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Apr 11 2022 Adam Ierymenko - 1.8.8 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Mar 21 2022 Adam Ierymenko - 1.8.7 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Mar 07 2022 Adam Ierymenko - 1.8.6 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Fri Dec 17 2021 Adam Ierymenko - 1.8.5 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue Nov 23 2021 Adam Ierymenko - 1.8.4 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Nov 15 2021 Adam Ierymenko - 1.8.3 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Nov 08 2021 Adam Ierymenko - 1.8.2 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Wed Oct 20 2021 Adam Ierymenko - 1.8.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Wed Sep 15 2021 Adam Ierymenko - 1.8.0 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue Apr 13 2021 Adam Ierymenko - 1.6.5 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Feb 15 2021 Adam Ierymenko - 1.6.4 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Nov 30 2020 Adam Ierymenko - 1.6.2-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue Nov 24 2020 Adam Ierymenko - 1.6.1-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Thu Nov 19 2020 Adam Ierymenko - 1.6.0-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Oct 05 2020 Adam Ierymenko - 1.6.0-beta1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Fri Aug 23 2019 Adam Ierymenko - 1.4.4-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Jul 29 2019 Adam Ierymenko - 1.4.0-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue May 08 2018 Adam Ierymenko - 1.2.10-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Thu May 03 2018 Adam Ierymenko - 1.2.8-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Mon Apr 24 2017 Adam Ierymenko - 1.2.2-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Fri Mar 17 2017 Adam Ierymenko - 1.2.2-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue Mar 14 2017 Adam Ierymenko - 1.2.0-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Tue Jul 12 2016 Adam Ierymenko - 1.1.10-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Fri Jul 08 2016 Adam Ierymenko - 1.1.8-0.1 +- see https://github.com/zerotier/ZeroTierOne for release notes + +* Sat Jun 25 2016 Adam Ierymenko - 1.1.6-0.1 +- now builds on CentOS 6 as well as newer distros, and some cleanup + +* Wed Jun 08 2016 François Kooman - 1.1.5-0.3 +- include systemd unit file + +* Wed Jun 08 2016 François Kooman - 1.1.5-0.2 +- add libnatpmp as (build)dependency + +* Wed Jun 08 2016 François Kooman - 1.1.5-0.1 +- initial package