Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Aug 2019 23:38:03 +0000 (UTC)
From:      Yuri Victorovich <yuri@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r508037 - in head/net: . yggdrasil yggdrasil/files
Message-ID:  <201908032338.x73Nc4lY081911@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: yuri
Date: Sat Aug  3 23:38:03 2019
New Revision: 508037
URL: https://svnweb.freebsd.org/changeset/ports/508037

Log:
  New port: net/yggdrasil: Experimental end-to-end encrypted self-arranging IPv6 network
  
  PR:		236607
  Submitted by:	Neil Alexander <freebsd@neilalexander.dev>

Added:
  head/net/yggdrasil/
  head/net/yggdrasil/Makefile   (contents, props changed)
  head/net/yggdrasil/distinfo   (contents, props changed)
  head/net/yggdrasil/files/
  head/net/yggdrasil/files/yggdrasil.in   (contents, props changed)
  head/net/yggdrasil/pkg-descr   (contents, props changed)
Modified:
  head/net/Makefile

Modified: head/net/Makefile
==============================================================================
--- head/net/Makefile	Sat Aug  3 23:12:10 2019	(r508036)
+++ head/net/Makefile	Sat Aug  3 23:38:03 2019	(r508037)
@@ -1535,6 +1535,7 @@
     SUBDIR += yaz++
     SUBDIR += yazproxy
     SUBDIR += yconalyzer
+    SUBDIR += yggdrasil
     SUBDIR += yptransitd
     SUBDIR += zebra
     SUBDIR += zebra-server

Added: head/net/yggdrasil/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yggdrasil/Makefile	Sat Aug  3 23:38:03 2019	(r508037)
@@ -0,0 +1,50 @@
+# $FreeBSD$
+
+PORTNAME=	yggdrasil
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.3.6
+CATEGORIES=	net ipv6
+
+MAINTAINER=	freebsd@neilalexander.dev
+COMMENT=	Experimental end-to-end encrypted self-arranging IPv6 network
+
+LICENSE=	LGPL3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		go
+USE_GITHUB=	yes
+GH_ACCOUNT=	yggdrasil-network
+GH_PROJECT=	yggdrasil-go
+GH_TUPLE=	\
+		docker:libcontainer:v2.2.1:docker_libcontainer/vendor/github.com/docker/libcontainer \
+		golang:crypto:4def268fd1a4:golang_crypto/vendor/golang.org/x/crypto \
+		golang:net:ca1201d0de80:golang_net/vendor/golang.org/x/net \
+		golang:sys:cbf593c0f2f3:golang_sys/vendor/golang.org/x/sys \
+		golang:text:v0.3.2:golang_text/vendor/golang.org/x/text \
+		gologme:log:4e5d8ccb38e8:gologme_log/vendor/github.com/gologme/log \
+		hashicorp:go-syslog:v1.0.0:hashicorp_go_syslog/vendor/github.com/hashicorp/go-syslog \
+		hjson:hjson-go:a25ecf6bd222:hjson_hjson_go/vendor/github.com/hjson/hjson-go \
+		kardianos:minwinsvc:cad6b2b879b0:kardianos_minwinsvc/vendor/github.com/kardianos/minwinsvc \
+		mitchellh:mapstructure:v1.1.2:mitchellh_mapstructure/vendor/github.com/mitchellh/mapstructure \
+		songgao:packets:549a10cd4091:songgao_packets/vendor/github.com/songgao/packets \
+		yggdrasil-network:water:a16161896c34:yggdrasil_network_water/vendor/github.com/yggdrasil-network/water
+GH_SUBDIR=	src/github.com/${GH_ACCOUNT}/${GH_PROJECT}
+
+MAKE_ENV+=	GOFLAGS=-mod=vendor
+
+PLIST_FILES=	bin/yggdrasil \
+		bin/yggdrasilctl
+
+USE_RC_SUBR=	yggdrasil
+
+pre-build:
+	@${REINPLACE_CMD} -e 's/set -ef/set -f/' ${WRKSRC}/build
+
+do-build:
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} PKGNAME=${PORTNAME} PKGVER=${PORTVERSION} ./build
+
+do-install:
+	${INSTALL_PROGRAM} ${WRKSRC}/yggdrasil ${STAGEDIR}${PREFIX}/bin/yggdrasil
+	${INSTALL_PROGRAM} ${WRKSRC}/yggdrasilctl ${STAGEDIR}${PREFIX}/bin/yggdrasilctl
+
+.include <bsd.port.mk>

Added: head/net/yggdrasil/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yggdrasil/distinfo	Sat Aug  3 23:38:03 2019	(r508037)
@@ -0,0 +1,27 @@
+TIMESTAMP = 1564875025
+SHA256 (yggdrasil-network-yggdrasil-go-v0.3.6_GH0.tar.gz) = dc1699064319f19a64ac57bac366a15d718008fdb75ef03bf4252d3552dff4eb
+SIZE (yggdrasil-network-yggdrasil-go-v0.3.6_GH0.tar.gz) = 152007
+SHA256 (docker-libcontainer-v2.2.1_GH0.tar.gz) = 3dc621731db53591d643611e2d7bb2efc942a6208e5178c335caecf9dc5f8826
+SIZE (docker-libcontainer-v2.2.1_GH0.tar.gz) = 348704
+SHA256 (golang-crypto-4def268fd1a4_GH0.tar.gz) = eaf2ba9df95911f41a340478d1fbb540d7bc21939e4688273995dabf58e8c7b0
+SIZE (golang-crypto-4def268fd1a4_GH0.tar.gz) = 1693117
+SHA256 (golang-net-ca1201d0de80_GH0.tar.gz) = 1d0b1f44b64c6248ce65f4d78add4228f15ffbdbe4a559a6d1effa410ce01071
+SIZE (golang-net-ca1201d0de80_GH0.tar.gz) = 1099216
+SHA256 (golang-sys-cbf593c0f2f3_GH0.tar.gz) = 3590c55ef807ee27909fecdd771996ab55ad5306f5174b877810a9a9915f0a18
+SIZE (golang-sys-cbf593c0f2f3_GH0.tar.gz) = 1454976
+SHA256 (golang-text-v0.3.2_GH0.tar.gz) = 0b9309698f5708531c5377ab1e29b423a6d9e20c55a8d386c3b8283428212f22
+SIZE (golang-text-v0.3.2_GH0.tar.gz) = 7168069
+SHA256 (gologme-log-4e5d8ccb38e8_GH0.tar.gz) = d5873e95bd5459d9a4813e7020236f15db01277ffba0abfc9f80c5bac7477157
+SIZE (gologme-log-4e5d8ccb38e8_GH0.tar.gz) = 5613
+SHA256 (hashicorp-go-syslog-v1.0.0_GH0.tar.gz) = be4bda814c068311ea8e185e2d108077f167897cfa868ada7f56d97a10f3d602
+SIZE (hashicorp-go-syslog-v1.0.0_GH0.tar.gz) = 4517
+SHA256 (hjson-hjson-go-a25ecf6bd222_GH0.tar.gz) = b41a4011abae684a1a1d3f8650a7db4948cc55373145b62845c7957add9c483f
+SIZE (hjson-hjson-go-a25ecf6bd222_GH0.tar.gz) = 25569
+SHA256 (kardianos-minwinsvc-cad6b2b879b0_GH0.tar.gz) = 820c068dfee3306853cb6cc63becb96b9f972a14a97ad71df3332f98bc4866cb
+SIZE (kardianos-minwinsvc-cad6b2b879b0_GH0.tar.gz) = 1804
+SHA256 (mitchellh-mapstructure-v1.1.2_GH0.tar.gz) = 53fbc06b125ff1c9c73a4eb1764346932671a29c67a45a92e2ebc6855635069b
+SIZE (mitchellh-mapstructure-v1.1.2_GH0.tar.gz) = 20980
+SHA256 (songgao-packets-549a10cd4091_GH0.tar.gz) = 15993683d3ab9d61baf14efe270c0ba06fe62a0b48621420e1d1da6bb24c85ac
+SIZE (songgao-packets-549a10cd4091_GH0.tar.gz) = 3517
+SHA256 (yggdrasil-network-water-a16161896c34_GH0.tar.gz) = dd00d472628013d35d9997e6bf9ea63ef9e6bd2e5dd2313404dee0c27f66edf7
+SIZE (yggdrasil-network-water-a16161896c34_GH0.tar.gz) = 17475

Added: head/net/yggdrasil/files/yggdrasil.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yggdrasil/files/yggdrasil.in	Sat Aug  3 23:38:03 2019	(r508037)
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# PROVIDE: yggdrasil
+# REQUIRE: networking
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="yggdrasil"
+rcvar="yggdrasil_enable"
+
+start_cmd="${name}_start"
+start_precmd="${name}_prestart"
+stop_cmd="${name}_stop"
+stop_postcmd="${name}_poststop"
+
+pidfile="/var/run/yggdrasil/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-P ${pidfile} -r -f ${yggdrasil_command}"
+
+yggdrasil_prestart()
+{
+	test ! -x %%PREFIX%%/bin/yggdrasil && (
+		logger -s -t yggdrasil "Warning: %%PREFIX%%/bin/yggdrasil is missing or not executable"
+		logger -s -t yggdrasil "Copy the yggdrasil binary into %%PREFIX%%/bin and then chmod +x %%PREFIX%%/bin/yggdrasil"
+		return 1
+	)
+
+	test ! -f %%PREFIX%%/etc/yggdrasil.conf && (
+		logger -s -t yggdrasil "Generating new configuration file into %%PREFIX%%/etc/yggdrasil.conf"
+		%%PREFIX%%/bin/yggdrasil -genconf > %%PREFIX%%/etc/yggdrasil.conf
+	)
+
+	tap_path="$(cat %%PREFIX%%/etc/yggdrasil.conf | egrep -o '/dev/tap[0-9]{1,2}$')"
+	tap_name="$(echo -n ${tap_path} | tr -d '/dev/')"
+
+	/sbin/ifconfig ${tap_name} >/dev/null 2>&1 || (
+		logger -s -t yggdrasil "Creating ${tap_name} adapter"
+		/sbin/ifconfig ${tap_name} create || logger -s -t yggdrasil "Failed to create ${tap_name} adapter"
+	)
+
+	mkdir -p /var/run/yggdrasil
+}
+
+yggdrasil_start()
+{
+	/sbin/ifconfig ${tap_name} >/dev/null 2>&1 || (
+		logger -s -t yggdrasil "Creating ${tap_name} adapter"
+		/sbin/ifconfig ${tap_name} create || logger -s -t yggdrasil "Failed to create ${tap_name} adapter"
+	)
+
+	logger -s -t yggdrasil "Starting yggdrasil"
+	${command} ${command_args} %%PREFIX%%/bin/yggdrasil -useconffile %%PREFIX%%/etc/yggdrasil.conf \
+		1>/var/log/yggdrasil.stdout.log \
+		2>/var/log/yggdrasil.stderr.log &
+}
+
+yggdrasil_stop()
+{
+	logger -s -t yggdrasil "Stopping yggdrasil"
+	test -f /var/run/yggdrasil/${name}.pid && kill -TERM $(cat /var/run/yggdrasil/${name}.pid)
+}
+
+yggdrasil_poststop()
+{
+	tap_path="$(cat %%PREFIX%%/etc/yggdrasil.conf | grep /dev/tap | egrep -o '/dev/.*$')"
+        tap_name="$(echo -n ${tap_path} | tr -d '/dev/')"
+
+	/sbin/ifconfig ${tap_name} >/dev/null 2>&1 && (
+		logger -s -t yggdrasil "Destroying ${tap_name} adapter"
+		/sbin/ifconfig ${tap_name} destroy || logger -s -t yggdrasil "Failed to destroy ${tap_name} adapter"
+	)
+}
+
+load_rc_config $name
+: ${yggdrasil_enable:=no}
+
+run_rc_command "$1"

Added: head/net/yggdrasil/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yggdrasil/pkg-descr	Sat Aug  3 23:38:03 2019	(r508037)
@@ -0,0 +1,7 @@
+Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6
+network. It is lightweight, self-arranging, supported on multiple platforms and
+allows pretty much any IPv6-capable application to communicate securely with
+other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet
+connectivity - it also works over IPv4.
+
+WWW: https://yggdrasil-network.github.io/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908032338.x73Nc4lY081911>