diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0e1fed22 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.cproject +.project +.settings/ +CMakeLists.txt +Makefile +bin/ +cmake-build-debug/ +src/bin/BuiltHamcoreFiles/ +tmp/ + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..81e6a5d5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,12 @@ +sudo: required +dist: trusty + +os: linux + +language: c + +compiler: [ gcc, clang ] + +script: + - ./configure + - make diff --git a/AUTHORS.TXT b/AUTHORS.TXT index 44fdbcfd..d56a95a2 100644 --- a/AUTHORS.TXT +++ b/AUTHORS.TXT @@ -139,6 +139,9 @@ CONTRIBUTORS on GitHub: - Guanzhong Chen https://github.com/quantum5 + - Nguyễn Hồng Quân + https://github.com/hongquan + JOIN THE SOFTETHER VPN DEVELOPMENT ---------------------------------- diff --git a/README b/README.md similarity index 85% rename from README rename to README.md index 5ab03f00..6e7166ff 100644 --- a/README +++ b/README.md @@ -1,7 +1,15 @@ +# SoftEther VPN + +[![Build Status](https://travis-ci.org/SoftEtherVPN/SoftEtherVPN.svg?branch=master)](https://travis-ci.org/SoftEtherVPN/SoftEtherVPN) + +--- + + SoftEther VPN (Developer Edition Master Repository) - An Open-Source Cross-platform Multi-protocol VPN Program http://www.softether.org/ + This repository has experimental codes. Pull requests are welcome. Stable Edition is available on @@ -39,8 +47,25 @@ by the single SoftEther VPN Server program. More details on http://www.softether.org/. -SOFTETHER VPN ADVANTAGES ------------------------- +# BOARD MEMBERS OF THIS REPOSITORY + + +Daiyuu Nobori (Since Jan 2, 2014) +https://github.com/dnobori + +Moataz Elmasry (Since Nov 6, 2017) +https://github.com/moatazelmasry2 + +Zulyandri Zardi (Since Nov 6, 2017) +https://github.com/zulzardi + +Alex Maslakov (Since Nov 6, 2017) +https://github.com/GildedHonour + + + +# SOFTETHER VPN ADVANTAGES + - Supporting all popular VPN protocols by the single VPN server: SSL-VPN (HTTPS) @@ -79,8 +104,7 @@ SOFTETHER VPN ADVANTAGES - More details at http://www.softether.org/. -GETTING STARTED ---------------- +# GETTING STARTED Visit the SoftEther VPN Project official web site at first: http://www.softether.org/ @@ -90,11 +114,10 @@ installers from: http://www.softether-download.com/ To build from the source, -see "BUILD_UNIX.TXT" or "BUILD_WINDOWS.TXT" files. +see [BUILD_UNIX](src/BUILD_UNIX.md) or [BUILD_WINDOWS](src/BUILD_WINDOWS.md) files. -HOW TO DOWNLOAD THE LATEST SOURCE CODE PACKAGE ----------------------------------------------- +# HOW TO DOWNLOAD THE LATEST SOURCE CODE PACKAGE Go to http://www.softether-download.com/ and you can find the latest source-code package file in both .ZIP and .TAR.GZ format. @@ -102,8 +125,7 @@ source-code package file in both .ZIP and .TAR.GZ format. This is the easiest way to obtain the source code of SoftEther VPN. -HOW TO GET THE LATEST SOURCE CODE TREE FOR DEVELOPERS ------------------------------------------------------ +# HOW TO GET THE LATEST SOURCE CODE TREE FOR DEVELOPERS If you are an open-source developer, visit our GitHub repository: https://github.com/SoftEtherVPN/SoftEtherVPN/ @@ -111,17 +133,40 @@ https://github.com/SoftEtherVPN/SoftEtherVPN/ You can download the up-to-date source-code tree of SoftEther VPN from GitHub. You may make your own fork project from our project. -The download and build instruction is following: + +## Requirements + +### 1. Debian/Ubuntu + +- gcc +- libncurses-dev +- libreadline-dev +- make +- openssl-dev + +### 2. Redhat/CentOS +- gcc +- openssl-devel +- make +- ncurses-devel +- readline-devel +## Compile and install + +The download and build instruction is following: + +```sh $ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git $ cd SoftEtherVPN $ ./configure $ make $ make install +``` -TO CIRCUMVENT YOUR GOVERNMENT'S FIREWALL RESTRICTION ----------------------------------------------------- + + +# TO CIRCUMVENT YOUR GOVERNMENT'S FIREWALL RESTRICTION Because SoftEther VPN is overly strong tool to build a VPN tunnel, some censorship governments want to block your access to the source code @@ -135,13 +180,13 @@ on all the following open-source repositories: https://github.com/SoftEtherVPN/SoftEtherVPN/ To fetch the source code from GitHub: +``` $ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git - +``` We hope that you can reach one of the above URLs at least! -SOURCE CODE CONTRIBUTION ------------------------- +# SOURCE CODE CONTRIBUTION Your contribution to SoftEther VPN Project is much appreciated. Please send patches to us through GitHub. @@ -149,8 +194,7 @@ Read the SoftEther VPN Patch Acceptance Policy in advance: http://www.softether.org/5-download/src/9.patch -DEAR SECURITY EXPERTS ---------------------- +# DEAR SECURITY EXPERTS If you find a bug or a security vulnerability please kindly inform us about the problem immediately so that we can fix the security problem @@ -164,8 +208,7 @@ inquiry address. If you need technical assistance, please visit http://www.softether.org/ and ask your question on the users forum. -DISCLAIMER ----------- +# DISCLAIMER THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF diff --git a/src/BUILD_UNIX.TXT b/src/BUILD_UNIX.TXT deleted file mode 100644 index f62295dd..00000000 --- a/src/BUILD_UNIX.TXT +++ /dev/null @@ -1,125 +0,0 @@ -How to build SoftEther VPN for UNIX -=================================== - - -Requirements ------------- - -You need to install the following software to build SoftEther VPN for UNIX. - -- Linux, FreeBSD, Solaris or Mac OS X. -- GNU Compiler Collectipon (gcc) and binary utilities. -- GNU Make (gmake). -- GNU C Library (glibc). -- POSIX Threads (pthread). -- OpenSSL (crypto, ssl). -- libiconv. -- readline. -- ncurses. - -For example, the following commands help you to install the above programs -on Fedora or CentOS Linux: - -$ yum -y groupinstall "Development Tools" -$ yum -y install readline-devel ncurses-devel openssl-devel - - -How to Build ------------- - -To build the programs from the source code, run the following commands: - -$ ./configure -$ make - -If any error occurs, please check the above requirements. - - -How to Install SoftEther VPN Server, Bridge or Client ------------------------------------------------------ - -To install the vpnserver, vpnbridge and vpnclient programs into the -/usr/bin directory, run the following as the root user: - -# make install - -After the installation will complete successfully: - -- Execute 'vpnserver start' to run the SoftEther VPN Server background service. -- Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service. -- Execute 'vpnclient start' to run the SoftEther VPN Client background service. -- Execute 'vpncmd' to run SoftEther VPN Command-Line Utility to configure - VPN Server, VPN Bridge or VPN Client. - -- You can also use VPN Server/Client Manager GUI Tool on other Windows PC to - connect to VPN services remotely. - You can download the GUI Tools from http://www.softether-download.com/. - - -How to Run SoftEther VPN Server for Test ----------------------------------------- - -To start the SoftEther VPN Server background service, run the following: - -$ bin/vpnserver/vpnserver start - -To stop the service, run the following: - -$ bin/vpnserver/vpnserver stop - -To configure the running SoftEther VPN Server service, -you can use SoftEther VPN Command Line Management Utility as following: - -$ bin/vpncmd/vpncmd - -Or you can also use VPN Server Manager GUI Tool on other Windows PC to -connect to the VPN Server remotely. You can download the GUI Tool -from http://www.softether-download.com/. - - -How to Run SoftEther VPN Bridge for Test ----------------------------------------- - -To start the SoftEther VPN Bridge background service, run the following: - -$ bin/vpnbridge/vpnbridge start - -To stop the service, run the following: - -$ bin/vpnbridge/vpnbridge stop - -To configure the running SoftEther VPN Bridge service, -you can use SoftEther VPN Command Line Management Utility as following: - -$ bin/vpncmd/vpncmd - -Or you can also use VPN Server Manager GUI Tool on other Windows PC to -connect to the VPN Bridge remotely. You can download the GUI Tool -from http://www.softether-download.com/. - - -How to Run SoftEther VPN Client for Test ----------------------------------------- - -To start the SoftEther VPN Client background service, run the following: - -$ bin/vpnclient/vpnclient start - -To stop the service, run the following: - -$ bin/vpnclient/vpnclient stop - -To configure the running SoftEther VPN Client service, -you can use SoftEther VPN Command Line Management Utility as following: - -$ bin/vpncmd/vpncmd - -Or you can also use VPN Client Manager GUI Tool on other Windows PC to -connect to the VPN Client remotely. You can download the GUI Tool -from http://www.softether-download.com/. - - -************************************ -Thank You Using SoftEther VPN ! -By SoftEther VPN Open-Source Project -http://www.softether.org/ diff --git a/BUILD_UNIX.TXT b/src/BUILD_UNIX.md similarity index 93% rename from BUILD_UNIX.TXT rename to src/BUILD_UNIX.md index f62295dd..8d8645a4 100644 --- a/BUILD_UNIX.TXT +++ b/src/BUILD_UNIX.md @@ -19,9 +19,10 @@ You need to install the following software to build SoftEther VPN for UNIX. For example, the following commands help you to install the above programs on Fedora or CentOS Linux: - +``` $ yum -y groupinstall "Development Tools" $ yum -y install readline-devel ncurses-devel openssl-devel +``` How to Build @@ -29,8 +30,10 @@ How to Build To build the programs from the source code, run the following commands: +``` $ ./configure $ make +``` If any error occurs, please check the above requirements. @@ -41,7 +44,9 @@ How to Install SoftEther VPN Server, Bridge or Client To install the vpnserver, vpnbridge and vpnclient programs into the /usr/bin directory, run the following as the root user: +``` # make install +``` After the installation will complete successfully: @@ -61,16 +66,22 @@ How to Run SoftEther VPN Server for Test To start the SoftEther VPN Server background service, run the following: +``` $ bin/vpnserver/vpnserver start +``` To stop the service, run the following: +``` $ bin/vpnserver/vpnserver stop +``` To configure the running SoftEther VPN Server service, you can use SoftEther VPN Command Line Management Utility as following: +``` $ bin/vpncmd/vpncmd +``` Or you can also use VPN Server Manager GUI Tool on other Windows PC to connect to the VPN Server remotely. You can download the GUI Tool @@ -82,16 +93,22 @@ How to Run SoftEther VPN Bridge for Test To start the SoftEther VPN Bridge background service, run the following: +``` $ bin/vpnbridge/vpnbridge start +``` To stop the service, run the following: +``` $ bin/vpnbridge/vpnbridge stop +``` To configure the running SoftEther VPN Bridge service, you can use SoftEther VPN Command Line Management Utility as following: +``` $ bin/vpncmd/vpncmd +``` Or you can also use VPN Server Manager GUI Tool on other Windows PC to connect to the VPN Bridge remotely. You can download the GUI Tool @@ -103,16 +120,22 @@ How to Run SoftEther VPN Client for Test To start the SoftEther VPN Client background service, run the following: +``` $ bin/vpnclient/vpnclient start +``` To stop the service, run the following: +``` $ bin/vpnclient/vpnclient stop +``` To configure the running SoftEther VPN Client service, you can use SoftEther VPN Command Line Management Utility as following: +``` $ bin/vpncmd/vpncmd +``` Or you can also use VPN Client Manager GUI Tool on other Windows PC to connect to the VPN Client remotely. You can download the GUI Tool diff --git a/src/BUILD_WINDOWS.TXT b/src/BUILD_WINDOWS.TXT deleted file mode 100644 index 9514488a..00000000 --- a/src/BUILD_WINDOWS.TXT +++ /dev/null @@ -1,44 +0,0 @@ -How to build SoftEther VPN for Windows -====================================== - - -Requirements ------------- - -You need to install the following software to build SoftEther VPN for Windows. - -- Microsoft Windows XP, Vista, 7, 8 or later. -- Microsoft Visual Studio 2008 with the latest SP (SP1 9.0.30729.4462 QFE). - Make sure that you installed the x64 compiler and build tools. - -* Note: - Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows. - Please make sure that VS2008 'SP1' is installed. - Visual Studio 2010, 2012 or 2013 is currently not supported. - Visual Studio 2008 Express Edition is not supported. - Standard Edition, Professional Edition, Team System or Team Suite is - required. - - -Full Build Instructions ------------------------ - -The following steps will build all SoftEther VPN program files, and also build -the installer packages of SoftEther VPN. It is very easy. - -1. Run the "BuildAll.cmd" batch file in the "src" directory. -2. Wait until the building process will complete. -3. The built files are stored on the "output" directory. - - -Partly Build, Debug or Development Instructions on Visual Studio 2008 ---------------------------------------------------------------------- - -If you are a programmer, you can open the SoftEther VPN solution file -with Visual Studio 2008 to customize. Open "src\SEVPN.sln" and enjoy it. - - -************************************ -Thank You Using SoftEther VPN ! -By SoftEther VPN Open-Source Project -http://www.softether.org/ diff --git a/BUILD_WINDOWS.TXT b/src/BUILD_WINDOWS.md similarity index 100% rename from BUILD_WINDOWS.TXT rename to src/BUILD_WINDOWS.md diff --git a/src/Mayaqua/Encrypt.c b/src/Mayaqua/Encrypt.c index 143069dd..e403189f 100644 --- a/src/Mayaqua/Encrypt.c +++ b/src/Mayaqua/Encrypt.c @@ -183,8 +183,8 @@ void Enc_tls1_P_hash(const EVP_MD *md, const unsigned char *sec, int sec_len, HMAC_CTX ctx_tmp_; ctx = &ctx_; ctx_tmp = &ctx_tmp_; - Zero(ctx, sizeof(ctx)); - Zero(ctx_tmp, sizeof(ctx_tmp)); + Zero(ctx, sizeof(HMAC_CTX)); + Zero(ctx_tmp, sizeof(HMAC_CTX)); #endif chunk=EVP_MD_size(md); diff --git a/src/makefiles/linux_32bit.mak b/src/makefiles/linux_32bit.mak index 7addd221..94c845c7 100644 --- a/src/makefiles/linux_32bit.mak +++ b/src/makefiles/linux_32bit.mak @@ -1,24 +1,24 @@ # SoftEther VPN Source Code -# +# # Copyright (c) 2012-2017 SoftEther VPN Project at University of Tsukuba, Japan. # Copyright (c) 2012-2017 Daiyuu Nobori. # All Rights Reserved. -# +# # http://www.softether.org/ -# +# # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # version 2 as published by the Free Software Foundation. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License version 2 # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# +# # Platform: os=Linux, bits=32bit # Variables @@ -422,6 +422,7 @@ $(INSTALL_BINDIR)vpncmd: bin/vpncmd/hamcore.se2 bin/vpncmd/vpncmd @mkdir -p $(INSTALL_VPNCMD_DIR) cp bin/vpncmd/hamcore.se2 $(INSTALL_VPNCMD_DIR)hamcore.se2 cp bin/vpncmd/vpncmd $(INSTALL_VPNCMD_DIR)vpncmd + chmod 644 $(INSTALL_VPNCMD_DIR)hamcore.se2 echo "#!/bin/sh" > $(INSTALL_BINDIR)vpncmd echo $(INSTALL_VPNCMD_DIR)vpncmd '"$$@"' >> $(INSTALL_BINDIR)vpncmd echo 'exit $$?' >> $(INSTALL_BINDIR)vpncmd diff --git a/src/makefiles/linux_64bit.mak b/src/makefiles/linux_64bit.mak index c473c1ec..93310277 100644 --- a/src/makefiles/linux_64bit.mak +++ b/src/makefiles/linux_64bit.mak @@ -1,37 +1,43 @@ # SoftEther VPN Source Code -# +# # Copyright (c) 2012-2017 SoftEther VPN Project at University of Tsukuba, Japan. # Copyright (c) 2012-2017 Daiyuu Nobori. # All Rights Reserved. -# +# # http://www.softether.org/ -# +# # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # version 2 as published by the Free Software Foundation. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License version 2 # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# +# # Platform: os=Linux, bits=64bit # Variables #CC=gcc -OPTIONS_COMPILE_DEBUG=-D_DEBUG -DDEBUG -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -g -fsigned-char -m64 +ifeq ($(shell uname -m),aarch64) + M64:= +else + M64:=-m64 +endif -OPTIONS_LINK_DEBUG=-g -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz +OPTIONS_COMPILE_DEBUG=-D_DEBUG -DDEBUG -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -g -fsigned-char $(M64) -OPTIONS_COMPILE_RELEASE=-DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 +OPTIONS_LINK_DEBUG=-g -fsigned-char $(M64) -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz -OPTIONS_LINK_RELEASE=-O2 -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz +OPTIONS_COMPILE_RELEASE=-DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char $(M64) + +OPTIONS_LINK_RELEASE=-O2 -fsigned-char $(M64) -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz INSTALL_BINDIR=/usr/bin/ INSTALL_VPNSERVER_DIR=/usr/vpnserver/ @@ -422,6 +428,7 @@ $(INSTALL_BINDIR)vpncmd: bin/vpncmd/hamcore.se2 bin/vpncmd/vpncmd @mkdir -p $(INSTALL_VPNCMD_DIR) cp bin/vpncmd/hamcore.se2 $(INSTALL_VPNCMD_DIR)hamcore.se2 cp bin/vpncmd/vpncmd $(INSTALL_VPNCMD_DIR)vpncmd + chmod 644 $(INSTALL_VPNCMD_DIR)hamcore.se2 echo "#!/bin/sh" > $(INSTALL_BINDIR)vpncmd echo $(INSTALL_VPNCMD_DIR)vpncmd '"$$@"' >> $(INSTALL_BINDIR)vpncmd echo 'exit $$?' >> $(INSTALL_BINDIR)vpncmd