New port: net/yggdrasil: Experimental end-to-end encrypted self-arranging IPv6 network

PR:		236607
Submitted by:	Neil Alexander <freebsd@neilalexander.dev>
This commit is contained in:
Yuri Victorovich 2019-08-03 23:38:03 +00:00
parent 3f56bd4461
commit 3a5eb1f43a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=508037
5 changed files with 163 additions and 0 deletions

View File

@ -1535,6 +1535,7 @@
SUBDIR += yaz++
SUBDIR += yazproxy
SUBDIR += yconalyzer
SUBDIR += yggdrasil
SUBDIR += yptransitd
SUBDIR += zebra
SUBDIR += zebra-server

50
net/yggdrasil/Makefile Normal file
View File

@ -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>

27
net/yggdrasil/distinfo Normal file
View File

@ -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

View File

@ -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"

7
net/yggdrasil/pkg-descr Normal file
View File

@ -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/