Subject: [govpn-devel] Progress on OSX, Android and Windows support

From: Bruno Clermont <[email-masked]>
Date: Tue, 17 Jan 2017 12:13:50 +0800

Hello,

Back a few months ago I said here
https://lists.cypherpunks.ru/pipermail/govpn-devel/2016-October/000108.html

> I will investigate OSX, Android and Windows support soon.

I'm glad to announce that I have a ported GoVPN to all these targets.
The pull request is on it's way, but it bring a lot of changes:

- Some OS don't allow you to pick the tun/tap interface name you want.
In fact, for Android, only a file-descriptor is available, not even the
interface name. Various changes had been made to be more flexible about
this.
- Client behave like server and the tun/tap interface can be set by the
"script" executed at startup
- The stats can be implemented as an other mechanism, but by default,
CLI is still using the same JSON based HTTP interface
- There is a "pre-up" executed before "up" step. CLI binaries behave the
same as before.
- The client state as a Go library had been improved a lot and it assume
less about it's own behavior, such as: no need to use os.Signal to stop
client loop.

Basically, the user side don't change at all. Only the internals of the
OS facing code.

Other unrelated changes are also in my branch: the server had been
turned into a Go library, but CLI daemon still behave the same.
It will be possible to use GoVPN as a library both side and use custom
logic for authentication, stats and network configuration.

I hope my changes won't be too scary and be rejected!