wg-quicker/README.md
Marvin Steadfast a191359626
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
try to fix homebrew
2021-01-27 11:35:23 +01:00

56 lines
2.1 KiB
Markdown

<p align="center">
<img src="./logo.png" width="587" alt="logo">
<p align="center"><b>wg-quick like library with batteries included</b></p>
<p align="center">
<a href="https://ci.xsfx.dev/xsteadfastx/wg-quicker"><img src="https://ci.xsfx.dev/api/badges/xsteadfastx/wg-quicker/status.svg" /></a>
<a href="https://pkg.go.dev/go.xsfx.dev/wg-quicker"><img src="https://pkg.go.dev/badge/go.xsfx.dev/wg-quicker.svg" alt="Go Reference"></a>
<a href="https://goreportcard.com/report/go.xsfx.dev/wg-quicker"><img src="https://goreportcard.com/badge/go.xsfx.dev/wg-quicker" alt="Go Report Card"></a>
</p>
</p>
---
This is a friendly fork of [wg-quick-go](https://github.com/nmiculinic/wg-quick-go). So all glory to them!!!11!! It contains everything needed to get a system into a wireguard vpn network. If there is no wireguard kernel modul available, it will spin up the embedded wireguard-go to create a wireguard interface.
# Installation
## Prebuild packages
Get these on the release [page](https://github.com/xsteadfastx/wg-quicker/releases).
## Homebrew
- `brew tap xsteadfastx/tap https://github.com/xsteadfastx/homebrew-tap`
- `brew install wg-quicker`
## Compile it for yourself
- `git clone https://git.xsfx.dev/xsteadfastx/wg-quicker.git`
- `cd wg-quicker`
- `make build`
# Roadmap
- [x] full wg-quick feature parity
- [x] PreUp
- [x] PostUp
- [x] PreDown
- [x] PostDown
- [x] DNS
- [x] MTU
- [x] Save --> Use MarshallText interface to save config
- [x] Sync
- [x] Up
- [x] Down
- [x] MarshallText
- [x] UnmarshallText
- [x] Minimal test
- [x] Embedded [wireguard-go](https://git.zx2c4.com/wireguard-go/about/)
- [ ] Integration tests ((TODO; have some virtual machines/kvm and wreck havoc :) ))
# Caveats
- Endpoints DNS MarshallText is unsupported
- Pre/Post Up/Down doesn't support escaped `%i`, that is all `%i` are expanded to interface name.
- SaveConfig in config is only a placeholder (( since there's no reading/writing from files )). Use Unmarshall/Marshall Text to save/load config (( you're responsible for IO)).