Skip to content

Commit

Permalink
Add proper README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Gaulomatic committed Jul 19, 2018
1 parent c0f49d6 commit 0d90f79
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 9 deletions.
130 changes: 128 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,131 @@
## SoftEther VPN Client
[![Build Status](https://travis-ci.org/Gaulomatic/Logixware.SoftEther.Client.svg?branch=master)](https://travis-ci.org/Gaulomatic/Logixware.SoftEther.Client)

# Logixware SoftEther Client

A daemon for SoftEther VPN client.

Since SoftEther is lacking a daemon for macOS and Linux, this is a wrapper around the client provided by SoftEther.
It starts the VPN client, handles IP address, static route management and `vpnclient` service & connection failures.

## Features

- Implemented in C# on .NET Core 2.1
- Background service for macOS (10.13 or higher)
- Background daemon for Linux (Ubuntu 18.04 or higher)
- Automatic IP address assignment on virtual TAP devices
- Automatic assignment and release of static routes associated with a VPN connection
- Automatic restart of the `vpnclient` service in cases of failures
- Configuration via .NET Core `appsettings.json` file

## Installation

### Prerequisites

#### macOS

- `tuntaposx` is required. You can download it [here](http://tuntaposx.sourceforge.net)

### Installer

- The is a `.pkg` package [available](https://github.com/Gaulomatic/Logixware.SoftEther.Client/releases) for installation on macOS.

### Manual installation on macOS

1. Compile the daemon by executing `./publish.sh` in the folder `src/Logixware.SoftEther.Client.Daemon`.
2. Copy the output from `src/Logixware.SoftEther.Client.Daemon/bin/Release/netcoreapp2.1/osx.10.13-x64/publish` to
`/Library/Application Support/Logixware/Logixware.SoftEther.Client.Daemon`
3. Copy `src/Logixware.SoftEther.Client.Daemon/de.logixware.SoftEther.Client.Daemon.plist` to `/Library/LaunchDaemons`
4. Copy `src/Logixware.SoftEther.Client.Daemon/appsettings.example.macos.json` to
`/Library/Preferences/Logixware/Logixware.SoftEther.Client.Daemon` and rename to `appsettings.json`
5. Download the official client from the [website](http://www.softether.org/5-download)
6. Compile it and copy the output to `/Library/Application Support/Softether/vpnclient`

### Installation on Linux

1. Compile the daemon by executing `./publish.sh` in the folder `src/Logixware.SoftEther.Client.Daemon`.
2. Copy the output from `src/Logixware.SoftEther.Client.Daemon/bin/Release/netcoreapp2.1/ubuntu.18.04-x64/publish` to
`/opt/logixware/Logixware.SoftEther.Client.Daemon`
3. Copy `src/Logixware.SoftEther.Client.Daemon/vpnclient.service` to `/lib/systemd/system`
4. Copy `src/Logixware.SoftEther.Client.Daemon/appsettings.example.linux.json` to
`/etc/logixware/Logixware.SoftEther.Client.Daemon` and rename to `appsettings.json`
5. Download the official client from the [website](http://www.softether.org/5-download)
6. Compile it and copy the output to `/opt/softether/vpnclient`

## Configuration

Open the config file in your favorite text editor and add configurations. The network name must match the connection
name in the `vpnclient` service.

- The location on macOS is `/Library/Preferences/Logixware/Logixware.SoftEther.Client.Daemon/appsettings.json`
- The location on Linux is `/etc/logixware/Logixware.SoftEther.Client.Daemon/appsettings.json`

### Sample configuration:

```json5
{
"Logging":
{
"LogLevel":
{
"Default": "Information"
}
},
"AllowedHosts": "*",
"VPN":
{
"CommandLineInterface":
{
"PathToClient": "/Library/Application Support/SoftEther/vpnclient/vpnclient",
"PathToCli": "/Library/Application Support/SoftEther/vpnclient/vpncmd",
"CliPassword": ""
},

"Platform":
{
"Mac":
{
"TapKextIdentifier": "net.sf.tuntaposx.tap",
"PathToTapKext": "/Library/Extensions/tap.kext"
}
},

"ConnectionAttemptsBeforeClientRestart": 5,

"Networks":
[
{
"Name": "logixware",
"ConnectionTestHost": "192.168.0.254",
"AlwaysOn": true,
"IPv4":
{
"Address": "192.168.0.1",
"Mask": "255.255.255.0",
"Routes":
[
{
"Network": "192.168.1.0",
"Prefix": "24",
"Gateway": "192.168.0.100"
}
]

},
"IPv6":
{
"Address": "fdd3:82c4:f610:c08f:fdd3:82c4:f610:1",
"Prefix": 64
}
}
]
}
}
```

## Credits

- Icons made by [Roundicons](https://www.flaticon.com/authors/roundicons). [Roundicons](https://www.flaticon.com/authors/roundicons) from [Flaticon](https://www.flaticon.com/) is licensed by [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/)


__Please feel free to download, fork and/or provide any feedback!__

https://www.flaticon.com/free-icon/vpn_188120
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

[assembly: System.Reflection.AssemblyCopyright("Copyright © 2017 - 2018 Tobias Punke.")]
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyFileVersion("1.0.0.11")]
[assembly: System.Reflection.AssemblyInformationalVersion("1.0.0.11")]
[assembly: System.Reflection.AssemblyFileVersion("1.0.0.12")]
[assembly: System.Reflection.AssemblyInformationalVersion("1.0.0.12")]


Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0.11
1.0.0.12
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

[assembly: System.Reflection.AssemblyCopyright("Copyright © 2017 - 2018 Tobias Punke.")]
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyFileVersion("1.0.0.8")]
[assembly: System.Reflection.AssemblyInformationalVersion("1.0.0.8")]
[assembly: System.Reflection.AssemblyFileVersion("1.0.0.19")]
[assembly: System.Reflection.AssemblyInformationalVersion("1.0.0.19")]


Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.1.18
1.0.1.19
2 changes: 1 addition & 1 deletion src/Logixware.SoftEther.Client.Daemon/vpnclient.service
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Type=simple
Restart=always
RestartSec=10
User=root
ExecStart=/usr/bin/env /opt/logixware/Logixware.SoftEther.Client.Daemon
ExecStart=/usr/bin/env /opt/logixware/Logixware.SoftEther.Client.Daemon/Logixware.SoftEther.Client.Daemon
WorkingDirectory=/opt/logixware/Logixware.SoftEther.Client.Daemon

[Install]
Expand Down

0 comments on commit 0d90f79

Please sign in to comment.