* Link refactoring
* More refactoring
* More tweaking
* Cleaner shutdowns, UNIX socket support, more tweaks
* Actorise links, remove mutex
* SOCKS support
* Do not exit on multicast errors (mobile)
* Consistency with cmd/yggdrasil/main.go
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Revert "Revert Wireguard update"
This reverts commit 03a5cce5bb739d5f3ad5d9877c38817cf88eccd5.
Signed-off-by: R4SAS <r4sas@i2pmail.org>
* [win] update installer build script
Signed-off-by: R4SAS <r4sas@i2pmail.org>
* [appveyor] use golang 1.17.3 for building
Signed-off-by: R4SAS <r4sas@i2pmail.org>
* [appveyor] use golang 1.17.5 for building
Signed-off-by: R4SAS <r4sas@i2pmail.org>
* test script
Signed-off-by: R4SAS <r4sas@i2pmail.org>
* test msi and semver scripts
Signed-off-by: R4SAS <r4sas@i2pmail.org>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
The AppArmor profile in contrib forbids `/usr/bin/yggdrasil` from reading the file in `/var/backups/yggdrasil.conf...`. This works around that restriction by having the shell do the reading of `/var/backups/yggdrasil.conf...` file while providing the same exact functionality without making the AppArmor profile less restrictive.
Another change is the safe perms for the `/etc/yggdrasil.conf` (so that config will have 0640 permissions). This is important because if we kept the default of 644 then any user (privileged or unprivileged) will have the ability to read the yggdrasil private key. We use a restrictive umask of 0027 to make this possible.
The apparmor profile in it's current state won't allow resolving hostnames. We need `<abstractions/nameservice>` because we simply can't just allow `/etc/resolv.conf`. This is because systemd-resolved, resolvconf, and others rely on symbolic links to `/etc/resolv.conf` which would make this extremely complicated. `<abstractions/nameservice>` deals with this complexity to allow every single one of those packages (systemd-resolved, resolvconf, ... ).
```
network inet stream,
network inet dgram,
network inet6 dgram,
network inet6 stream,
network netlink raw,
```
was removed because it's already included in `<abstractions/nameservice>`. Some permissions that are no longer needed in newer yggdrasil versions were also removed.
`owner /sys/kernel/mm/transparent_hugepage/hpage_pmd_size r,` was changed to `/sys/kernel/mm/transparent_hugepage/hpage_pmd_size r,` because there is no guarantee that yggdrasil will always be run as root. (`owner` makes sure that the process's user and the file have the same owner, in that case, root. This might not always be the case so `owner` was removed)
* golangci-lint in CI
* Put CI in own job
* Run verify job
* Use go get
* Fix typo
* Name lint instead of verify
* Read the config
* Use debug tag
* Tweaks