mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-23 01:49:53 +03:00
Merge pull request #1 from SoftEtherVPN/master
update to latest version
This commit is contained in:
commit
39c1081d38
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Changes proposed in this pull request:
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
|
||||||
|
Your great patch is much appreciated. We are considering to apply your patch into the SoftEther VPN main tree.
|
||||||
|
|
||||||
|
SoftEther VPN Patch Acceptance Policy:
|
||||||
|
http://www.softether.org/5-download/src/9.patch
|
||||||
|
|
||||||
|
You have two options which are described on the above policy.
|
||||||
|
Could you please choose either option 1 or 2, and specify it clearly on the reply?
|
||||||
|
|
||||||
|
-
|
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.cproject
|
||||||
|
.project
|
||||||
|
.settings/
|
||||||
|
CMakeLists.txt
|
||||||
|
Makefile
|
||||||
|
bin/
|
||||||
|
cmake-build-debug/
|
||||||
|
src/bin/BuiltHamcoreFiles/
|
||||||
|
tmp/
|
||||||
|
|
86
AUTHORS.TXT
86
AUTHORS.TXT
@ -6,7 +6,7 @@ AUTHORS OF SOFTETHER VPN
|
|||||||
|
|
||||||
CORE DEVELOPERS:
|
CORE DEVELOPERS:
|
||||||
|
|
||||||
- Daiyuu Nobori
|
- Daiyuu Nobori, Ph.D.
|
||||||
Computer Science, Graduate School of University of Tsukuba
|
Computer Science, Graduate School of University of Tsukuba
|
||||||
SoftEther Corporation
|
SoftEther Corporation
|
||||||
E-mail: daiyuu-nobori [at] softether.org
|
E-mail: daiyuu-nobori [at] softether.org
|
||||||
@ -18,16 +18,16 @@ CORE DEVELOPERS:
|
|||||||
Risk Engineering, Graduate School of University of Tsukuba
|
Risk Engineering, Graduate School of University of Tsukuba
|
||||||
SoftEther Corporation
|
SoftEther Corporation
|
||||||
|
|
||||||
- Takao Ito
|
- Takao Ito, Ph.D.
|
||||||
Computer Science, Graduate School of University of Tsukuba
|
Computer Science, Graduate School of University of Tsukuba
|
||||||
SoftEther Corporation
|
SoftEther Corporation
|
||||||
|
|
||||||
|
- Mei Sharie Ann Yamaguchi, Ph.D.
|
||||||
|
Life and Environmental Sciences, Graduate School of University of Tsukuba
|
||||||
|
|
||||||
- Christopher Smith
|
- Christopher Smith
|
||||||
College of Information Science, University of Tsukuba
|
College of Information Science, University of Tsukuba
|
||||||
|
|
||||||
- Mei Sharie Ann Yamaguchi
|
|
||||||
Life and Environmental Sciences, Graduate School of University of Tsukuba
|
|
||||||
|
|
||||||
|
|
||||||
WEB-SITE DESIGNER:
|
WEB-SITE DESIGNER:
|
||||||
|
|
||||||
@ -67,6 +67,77 @@ CONTRIBUTORS on GitHub:
|
|||||||
- ygrek
|
- ygrek
|
||||||
https://github.com/ygrek
|
https://github.com/ygrek
|
||||||
|
|
||||||
|
- ajee cai
|
||||||
|
https://github.com/ajeecai
|
||||||
|
|
||||||
|
- NOKUBI Takatsugu
|
||||||
|
https://github.com/knok
|
||||||
|
|
||||||
|
- Den Lesnov
|
||||||
|
https://github.com/Leden
|
||||||
|
|
||||||
|
- Ilya Shipitsin
|
||||||
|
https://github.com/chipitsine
|
||||||
|
|
||||||
|
- Matt Lewandowsky
|
||||||
|
https://github.com/lewellyn
|
||||||
|
|
||||||
|
- Raymond Tau
|
||||||
|
https://github.com/rtau
|
||||||
|
|
||||||
|
- Luiz Eduardo Gava
|
||||||
|
https://github.com/LegDog
|
||||||
|
|
||||||
|
- Charles Surett
|
||||||
|
https://github.com/scj643
|
||||||
|
|
||||||
|
- Jeff Tang
|
||||||
|
https://github.com/mrjefftang
|
||||||
|
|
||||||
|
- Victor Salgado
|
||||||
|
https://github.com/mcsalgado
|
||||||
|
|
||||||
|
- micsell
|
||||||
|
https://github.com/micsell
|
||||||
|
|
||||||
|
- yehorov
|
||||||
|
https://github.com/yehorov
|
||||||
|
|
||||||
|
- dglushenok
|
||||||
|
https://github.com/dglushenok
|
||||||
|
|
||||||
|
- NoNameA 774
|
||||||
|
https://github.com/nna774
|
||||||
|
|
||||||
|
- Alexandre De Oliveira
|
||||||
|
https://github.com/yodresh
|
||||||
|
|
||||||
|
- Bernhard Rosenkraenzer
|
||||||
|
https://github.com/berolinux
|
||||||
|
|
||||||
|
- Sacha Bernstein
|
||||||
|
https://github.com/sacha
|
||||||
|
|
||||||
|
- cm0x4D
|
||||||
|
https://github.com/cm0x4D
|
||||||
|
|
||||||
|
- DDGo
|
||||||
|
https://github.com/DDGo
|
||||||
|
|
||||||
|
- Noah O'Donoghue
|
||||||
|
https://github.com/NoahO
|
||||||
|
|
||||||
|
- Moataz Elmasry
|
||||||
|
https://github.com/moatazelmasry2
|
||||||
|
|
||||||
|
- Zulyandri Zardi
|
||||||
|
https://github.com/zulzardi
|
||||||
|
|
||||||
|
- rel22
|
||||||
|
https://github.com/rel22
|
||||||
|
|
||||||
|
- Guanzhong Chen
|
||||||
|
https://github.com/quantum5
|
||||||
|
|
||||||
JOIN THE SOFTETHER VPN DEVELOPMENT
|
JOIN THE SOFTETHER VPN DEVELOPMENT
|
||||||
----------------------------------
|
----------------------------------
|
||||||
@ -76,8 +147,3 @@ Want to become a contributor? Please send us a patch.
|
|||||||
See also: SoftEther VPN Patch Acceptance Policy
|
See also: SoftEther VPN Patch Acceptance Policy
|
||||||
http://www.softether.org/5-download/src/9.patch
|
http://www.softether.org/5-download/src/9.patch
|
||||||
|
|
||||||
|
|
||||||
Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ You need to install the following software to build SoftEther VPN for Windows.
|
|||||||
|
|
||||||
- Microsoft Windows XP, Vista, 7, 8 or later.
|
- Microsoft Windows XP, Vista, 7, 8 or later.
|
||||||
- Microsoft Visual Studio 2008 with the latest SP (SP1 9.0.30729.4462 QFE).
|
- 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:
|
* Note:
|
||||||
Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows.
|
Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows.
|
||||||
|
355
ChangeLog
355
ChangeLog
@ -1,10 +1,353 @@
|
|||||||
ChangeLog of SoftEther VPN
|
SoftEther VPN 4.23 Build 9647 Beta (October 18, 2017)
|
||||||
--------------------------
|
Upgraded OpenSSL to 1.0.2l.
|
||||||
|
Source code is now compatible with OpenSSL 1.1.x. Supports DHE-RSA-CHACHA 20-POLY 1305 and ECDHE-RSA-CHACHA 20-POLY 1305, which are new encryption methods of TLS 1.2. (In order to use this new function, you need to recompile yourself using OpenSSL 1.1.x.)
|
||||||
|
TrafficServer / TrafficClient function (The traffic throughput measurement function) is now multithreaded and compatible with about 10 Gbps using NIC with the RSS feature.
|
||||||
|
Changed the default algorithm for SSL from RC4-MD5 to AES128-SHA.
|
||||||
|
Fixed a bug that occurr wrong checksum recalculation in special case of the TCP-MSS clamp processing.
|
||||||
|
Fixed the calculation interval of update interval of DHCP client packet issued by kernel mode virtual NAT function of SecureNAT function.
|
||||||
|
Driver upgrade and DLL name change with Crypto ID support of USB security token.
|
||||||
|
Fixed a problem that CPU sleep processing was not performed when the wait time of the Select () function was INFINITE on Mac OS X.
|
||||||
|
Added the StrictSyslogDatetimeFormat flag onto the ServerConfiguration section on the VPN Server configuration file, which sets Syslog date format to RFC3164.
|
||||||
|
Fixed wrong English in the UI.
|
||||||
|
Using client parameter in function CtConnect
|
||||||
|
Remove blank line at the start from init file (Debian)
|
||||||
|
Stop Radius Delay from counting to next_resend
|
||||||
|
Add DH groups 2048,3072,4096 to IPSec_IKE
|
||||||
|
Add HMAC SHA2-256, HMAC SHA2-384, HMAC SHA2-512 support
|
||||||
|
Openvpn extend ciphers
|
||||||
|
Fixed RSA key bits wrong calculation for certain x509 certificate
|
||||||
|
Added support for RuToken USB key PKCS#11
|
||||||
|
OpenSSL 1.1 Port
|
||||||
|
|
||||||
The ChangeLog of SoftEther VPN is on our web site:
|
SoftEther VPN 4.22 Build 9634 Beta (November 27, 2016)
|
||||||
http://www.softether.org/5-download/history
|
Added the support for TLS 1.2. Added TLS 1.2-based cipher sets: AES128-GCM-SHA256, AES128-SHA256, AES256-GCM-SHA384, AES256-SHA256, DHE-RSA-AES128-GCM-SHA256, DHE-RSA-AES128-SHA256, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, ECDHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-GCM-SHA384 and ECDHE-RSA-AES256-SHA384.
|
||||||
|
Added the function to allow to configure specific TLS versions to accept / deny. In the VPN Server configuration file you can set Tls_Disable1_0, Tls_Disable1_1 and Tls_Disable1_2 flags to true to disable these TLS versions individually.
|
||||||
|
Added the support for TLS 1.2 on the OpenVPN protocol.
|
||||||
|
Updated the version of OpenSSL to 1.0.2j.
|
||||||
|
Added the support for Windows Server 2016.
|
||||||
|
Fixed the 2038-year problem.
|
||||||
|
Added the support for recording HTTPS destination hostnames, using SNI attributes, on the packet logging function.
|
||||||
|
Added the function to append the name of Virtual Hub into the "Called-Station-ID (30)" attribute value in the RADIUS authentication request packet.
|
||||||
|
Improved the behavior of Virtual Layer-3 switches. The interval of ARP request is set to 1 second.
|
||||||
|
Fixed the problem of the slow startup of VPN Server in Windows 10.
|
||||||
|
Added the support for 4096 bits RSA authentication with smart cards.
|
||||||
|
Added the support for the CryptoID USB token.
|
||||||
|
Fixed the UI string resource in English.
|
||||||
|
Fix that ParseTcpOption doesn't work correctly
|
||||||
|
Add LSB header
|
||||||
|
Support Debian package build on aarch64 architecture
|
||||||
|
Support Debian package build on ARMv7l architecture
|
||||||
|
cppcheck issues
|
||||||
|
Default to TLS connections only
|
||||||
|
Allow specific SSL/TLS versions to be disabled
|
||||||
|
Adding Radius AVP Called-Station-Id
|
||||||
|
Fixed typo
|
||||||
|
Update CentOS makefiles and spec file
|
||||||
|
Systemd service configuration files for SoftEther
|
||||||
|
Fix set initialization, set.OnlyCapsuleModeIsInvalid could be garbage
|
||||||
|
Fixed OSX CPU utilization by replacing broken kevent () with select ()
|
||||||
|
Add the possibility to send the Virtual Hub Name to an external DHCP server
|
||||||
|
Added armv5tel for debian/rules and made pushed routes work correct with OpenVPN
|
||||||
|
fix LogFileGet won't save to SAVEPATH
|
||||||
|
Fix for Debian Package
|
||||||
|
Try to autodetect OS and CPU instead of requiring user input
|
||||||
|
Support For Radius Realm
|
||||||
|
|
||||||
(In Japanese: http://ja.softether.org/5-download/history)
|
SoftEther VPN 4.21 Build 9613 Beta (April 24, 2016)
|
||||||
|
Added SoftEther VPN Server Manager for Mac OS X.
|
||||||
|
Now you can manage your SoftEther VPN Server, running remotely, from your Mac in local.
|
||||||
|
|
||||||
Enjoy it!
|
SoftEther VPN 4.20 Build 9608 RTM (April 18, 2016)
|
||||||
|
All cumulative updates below are included.
|
||||||
|
Fixed a minor English typo.
|
||||||
|
|
||||||
|
SoftEther VPN 4.19 Build 9605 Beta (March 3, 2016)
|
||||||
|
The version of OpenSSL is updated to 1.0.2g to fix the vulnerability which was published in March 2016. SSLv2 is now disabled completely.
|
||||||
|
Fixed a multi-byte character problem in the certificate generating tool.
|
||||||
|
Enable the cache of the destination IP address of the additional TCP connection for a VPN session.
|
||||||
|
|
||||||
|
SoftEther VPN 4.19 Build 9599 Beta (October 19, 2015)
|
||||||
|
Fixed the problem that an unnecessary "Insert disk" dialog box appears when installing VPN Server or VPN Bridge on Windows 10.
|
||||||
|
Added the "/NOHUP" parameter in the "TrafficServer" command of vpncmd.
|
||||||
|
Added the "/REDIRECTURL" parameter in some access list commands of vpncmd.
|
||||||
|
Added the virtual address check routines in kernel-mode drivers to prevent blue screen or invalid memory access. Previous versions of kernel-mode drivers did not check the virtual addresses from the user-mode. (NOTE: All kernel-mode drivers are protected by ACL to avoid privilege escalation in all previous versions. Only users with Administrator privileges were able to cause blue screen or invalid memory access by passing invalid addresses from the user-mode. Therefore this was not a security flaw.) Appreciate Meysam Firozi's contribution to report the similar problem in the Win10Pcap driver.
|
||||||
|
|
||||||
|
SoftEther VPN 4.19 Build 9582 Beta (October 6, 2015)
|
||||||
|
Dramatically improvement of the performance of the Virtual NAT function of SecureNAT in Linux. In the previous versions of SoftEther VPN, the SecureNAT performance was very slow in the specific situation that the Linux Virtual Machine (VM) is running with virtual Ethernet interfaces which are prohibited to enable the promiscuous mode (this problem has been frequently appeared on cloud servers such like Amazon EC2/AWS or Windows Azure). In such a situation, SecureNAT must use the user-mode TCP/IP stack simulation and it was very slow and had high latency. This version of SoftEther VPN Server adds the new "RAW IP Mode" in the SecureNAT function. The RAW IP Mode is enabled by default, and is effective only if the VPN Server process is running in the root privileges. In the RAW IP Mode, the SecureNAT function realizes to transmit and receive TCP, UDP and ICMP packets which headers are modified. This behavior realizes drastically improved performance than legacy user-mode SecureNAT in the previous versions. In order to avoid the misunderstanding of receiving packets which are towards to the Virtual NAT function, some packet filter rules are automatically added to the iptables chain list. You can disable the RAW IP Mode by setting the "DisableIpRawModeSecureNAT" value to "1" on the Virtual Hub Extending Options.
|
||||||
|
|
||||||
|
Improved the performance of the Kernel-mode SecureNAT.
|
||||||
|
|
||||||
|
Improved the stability of the L2TP VPN sessions on the network with heavy packet-losses.
|
||||||
|
|
||||||
|
Added the compatibility with Cisco 800 series routers (e.g. Cisco 841M) on the L2TPv3 over IPsec protocol. These new Cisco routers have modified L2TPv3 header interpreter. Therefore SoftEther VPN Server needed to add new codes to support these new Cisco routers.
|
||||||
|
|
||||||
|
Added the support the compatibility to YAMAHA RTX series routers on the L2TPv3 over IPsec protocol.
|
||||||
|
|
||||||
|
Added the support for EAP and PEAP. SoftEther VPN Server can now speak RFC3579 (EAP) or Protected EAP (PEAP) to request user authentications to the RADIUS server with the MS-CHAPv2 mechanism. If this function is enabled, all requests from L2TP VPN clients which contain MS-CHAPv2 authentication data will be converted automatically to EAP or PEAP when it is transferred to the RADIUS server. You must enable this function manually for each of Virtual Hubs. To enable the function converting from MS-CHAPv2 to EAP, set the "RadiusConvertAllMsChapv2AuthRequestToEap" value to "true" in the vpn_server.config. To enable the functin converting from MS-CHAPv2 to PEAP, set both "RadiusConvertAllMsChapv2AuthRequestToEap" and "RadiusUsePeapInsteadOfEap" options to "true".
|
||||||
|
|
||||||
|
SoftEther VPN 4.19 Build 9578 Beta (September 15, 2015)
|
||||||
|
Solved the problem that kernel mode drivers do not pass the general tests of "Driver Verifier Manager" in Windows 10.
|
||||||
|
|
||||||
|
SoftEther VPN 4.18 Build 9570 RTM (July 26, 2015)
|
||||||
|
Compabible with Windows 10.
|
||||||
|
Solved the problem that the customized language setting on the "lang.config" file.
|
||||||
|
config sometimes corrupts in the rare condition.
|
||||||
|
|
||||||
|
SoftEther VPN 4.17 Build 9566 Beta (July 16, 2015)
|
||||||
|
Improved stability with Windows 10 Beta.
|
||||||
|
Updated the OpenSSL library to 1.0.2d.
|
||||||
|
|
||||||
|
SoftEther VPN 4.17 Build 9562 Beta (May 30, 2015)
|
||||||
|
Added supports for Windows 10 Technical Preview Build 10130.
|
||||||
|
Increased the maximum Ethernet frame size from 1560 bytes to 1600 bytes.
|
||||||
|
Fixed the compiler error while building the source code of SoftEther VPN on Windows.
|
||||||
|
Added memory tags on the memory allocation function calls in kernel-mode device drivers.
|
||||||
|
Fixed the freeze problem of the VPN Client that the computer enters to suspend or hibernation state while the VPN Client is connected to the VPN Server.
|
||||||
|
Windows-version executable and driver files are now signed by the SHA-256 digital code-sign certificate.
|
||||||
|
|
||||||
|
SoftEther VPN 4.15 Build 9546 Beta (April 5, 2015)
|
||||||
|
Fixed the problem that the Local Bridge function does not work correctly on Windows 10 Technical Preview Build 10049.
|
||||||
|
|
||||||
|
SoftEther VPN 4.15 Build 9539 Beta (April 4, 2015)
|
||||||
|
Add the code to instruct the VPN Client to disconnect the VPN session automatically when Windows is being suspending or hibernating.
|
||||||
|
|
||||||
|
SoftEther VPN 4.15 Build 9538 Beta (March 27, 2015)
|
||||||
|
Fixed the dialog-box size problem on Windows 10 Technical Preview Build 10041.
|
||||||
|
|
||||||
|
SoftEther VPN 4.15 Build 9537 Beta (March 26, 2015)
|
||||||
|
Upgraded built-in OpenSSL from 0.9.8za to 1.0.2a. Please note that this change has not been well-tested. This upgrading of OpenSSL might cause problems. In that case, please post the bug report.
|
||||||
|
|
||||||
|
SoftEther VPN 4.14 Build 9529 Beta (February 2, 2015)
|
||||||
|
We are very sorry. The previous version 4.13 (beta) has a problem to accept L2TP connections due to the session-state quota-limitation code by the minor change between Build 9514 and 9524. The problem is fixed on this build. Please update to this build if you are facing to the L2TP problem on version 4.13.
|
||||||
|
Added the function to record underlying source IP addresses of VPN clients on every packet log lines. This function can be disabled by set the "NoPhysicalIPOnPacketLog" flag in the Virtual Hub Extended Option to "1".
|
||||||
|
|
||||||
|
SoftEther VPN 4.13 Build 9524 Beta (January 31, 2015)
|
||||||
|
Modified the behavior of the Local Bridge function in the VPN Server on Linux. In the previous versions, if several Local Bridge creation operations will be made, then the operations to disable the offloading function on the target Ethernet devices will be conducted as many as same. After this version, the operation to disable the offloading function will be called only once for each device if several Local Bridge creation operations will be made on the same Ethernet device.
|
||||||
|
Added the "SecureNAT_RandomizeAssignIp" Virtual Hub Extended Option. If you set this option to non-zero value, then the Virtual DHCP Server of the SecureNAT function will choose an unused IP address randomly from the DHCP pool while the default behavior is to choose the first unused IP address.
|
||||||
|
Added the "DetectDormantSessionInterval" Virtual Hub Extended Option. If you set this option to non-zero value, then the Virtual Hub will treat the VPN sessions, which have transmitted no packets for the last specified intervals (in seconds), as Dormant Sessions. The Virtual Hub will not flood packets, which should be flood, to any Dormant Sessions.
|
||||||
|
Added the implementation of the SHA () function in the source code. This made the building process easier on the low-memory embedded hardware which has its OpenSSL implementation without the SHA () function.
|
||||||
|
Improved the behavior on Windows 10 Technical Preview to show the OS version information correctly.
|
||||||
|
|
||||||
|
SoftEther VPN 4.12 Build 9514 Beta (November 17, 2014)
|
||||||
|
Added the VLAN ID dynamic assignment function by RADIUS. It is very useful when the layer-2 Ethernet segment with aggregated IEEE802.1Q tagged VLANs is bridged to your Virtual Hub. Each VPN session will be assigned its own VLAN ID by the RADIUS attribute value when the user is authenticated by the external RADIUS server unless the user object has a VLAN ID security policy. The RADIUS attribute with the name "Tunnel-Pvt-Group-ID" (ID = 81) will be used as the VLAN ID. The data type must be STRING. This function is disabled by default. You have to set the "AssignVLanIdByRadiusAttribute" value to "1" in the Virtual Hub Extended Options in advance.
|
||||||
|
Added the OpenVPNDefaultClientOption option in the vpn_server.config. The specified option string will be used alternatively when the connecting OpenVPN Client does not provide the connection string. Some incomplete OpenVPN Clients with the --enable-small compiling option always forget to specify this connection string. This option can make VPN Server allow such OpenVPN Clients.
|
||||||
|
Improved the DHCP option parser to allow the external DHCP server pushes the classless routing table which exceeds 255 bytes.
|
||||||
|
Added the support for "hair-pin connection" on the NAT Traversal function.
|
||||||
|
Fixed the performance problem when the server computer has the wrong resolv.conf setting file on Linux.
|
||||||
|
Fixed the VPN Client configuration backup folder name which the setup wizard automatically creates.
|
||||||
|
Fixed the UDP checksum value of the beacon packets which are sent by the Virtual Layer 3 Switch function.
|
||||||
|
|
||||||
|
SoftEther VPN 4.11 Build 9506 Beta (October 22, 2014)
|
||||||
|
As a response to the SSLv3 POODLE problem we added the "AcceptOnlyTls" configuration flag on the vpn_server.config for SoftEther VPN Server. Please set this flag is you want to completely disable the SSLv3 function in SoftEther VPN Server.
|
||||||
|
Added the perfect forward security (PFS) support on SSL/TLS. SoftEther VPN Server can now accept connections with DHE-RSA-AES128-SHA or DHE-RSA-AES256-SHA ciphers.
|
||||||
|
|
||||||
|
SoftEther VPN 4.10 Build 9505 Beta (October 3, 2014)
|
||||||
|
Implemented the hash table algorithm for the MAC address database of Virtual Hubs. It improves the performance when there are a large number of MAC addresses registered on the database.
|
||||||
|
Improved the performance on slow-CPU hardware (e.g. embedded Linux boxes).
|
||||||
|
Added the DoNotDisableOffloading flag on Local Bridge settings. This flag will disable the automated disabling operation for hardware offloading on the specified Ethernet interface on Linux.
|
||||||
|
Supports the kernel-supported IEEE802.1Q tagged VLAN on Windows and Linux. It will enable tagged-VLAN support on the Local Bridge function with some specific network interface drivers.
|
||||||
|
Added the FloodingSendQueueBufferQuota option.
|
||||||
|
Sets the lower priority value on the oom_adj process parameter for Linux.
|
||||||
|
Randomized the reconnection interval in Cascade Connection.
|
||||||
|
Increased the memory usage limit on 64-bit systems.
|
||||||
|
Modified the behavior of the ConfigGet command and the /CSV option in vpncmd for Windows to work around for the Windows console API bug.
|
||||||
|
Added the DisableSessionReconnect option on VPN Server and VPN Bridge. It makes Cascade Connection client sessions to disconnect immediately from the destination VPN Server when the based TCP connection is disconnected.
|
||||||
|
Makes it enable to use the PrivacyFilterMode security policy on Cascade server VPN sessions.
|
||||||
|
Added the GlobalParams configuration option on VPN Server and VPN Bridge. It allows administrators to modify and optimize the performance parameters of VPN Server and VPN Bridge.
|
||||||
|
Reduced the processor time of looking up the ACL entries when storing and forwarding packets across a Virtual Hub.
|
||||||
|
Reduced the usage of the memory on embedded Linux environments.
|
||||||
|
Fixed a minor bug on the GUI setting screen of the SecureNAT routing table pushing option.
|
||||||
|
Added the ServerLogSwitchType and the LoggerMaxLogSize option on VPN Server and VPN Bridge. They can change the logging behavior of VPN Server and VPN Bridge.
|
||||||
|
Implemented the config template file. The template filename is "vpn_server_template.config" for VPN Server, and "vpn_server_template.config" for VPN Bridge. The VPN Server and VPN Bridge loads the template file as the initial configuration state when the configuration file does not exists.
|
||||||
|
|
||||||
|
SoftEther VPN 4.10 Build 9473 Beta (July 12, 2014)
|
||||||
|
Added the "SuppressClientUpdateNotification" option in the Virtual Hub Extended Option list. This option will push the flag to the VPN Client to suppress the update notification screen on the VPN Client manager. To push this flag, set "1" to the "SuppressClientUpdateNotification" option in your Virtual Hub.
|
||||||
|
Added the warning message when the background service process is run by a non-root user (only in UNIX).
|
||||||
|
Fixed the deadlock bug when UNIX versions of SoftEther VPN Server process is shutting down.
|
||||||
|
Added supports for third-party PKCS#11 DLLs: ePass 1000 ND / ePass 2000 / ePass 2003 / ePass 3000.
|
||||||
|
Fixed typo.
|
||||||
|
The expression of the disclaimer statement for exporting / importing has been modified.
|
||||||
|
Fixed the VPN Azure connection problem on Version 4.09 Build 9451 Beta.
|
||||||
|
Fixed the problem that VPN Server Manager and VPN Client Manager sometimes become slow when the update check server is unreachable from the computer.
|
||||||
|
Removed space characters in every URLs of all download files on the SoftEther VPN Download Center web site to avoid the downloading problem in some HTTP clients.
|
||||||
|
A github patch which was posted by a contributor has been applied: "update debian packaging, install init script".
|
||||||
|
|
||||||
|
SoftEther VPN 4.09 Build 9451 Beta (June 9, 2014)
|
||||||
|
Improves User-mode SecureNAT performance by modifying the processing of TCP_FIN packets. It should improve the performance of the FTP protocol.
|
||||||
|
|
||||||
|
SoftEther VPN 4.08 Build 9449 (June 8, 2014)
|
||||||
|
Add a new command to generate a RSA 2048 bit certificate.
|
||||||
|
The vpncmd command-line utility has MakeCert command to generate a 1024 bit self-signed RSA certificate. However, in recent years it is recommended to use 2048 bit RSA certificates. Therefore, on this version a new command MakeCert2048 has been added. Use this command to generate a 2048 bit self-signed RSA certificate.
|
||||||
|
|
||||||
|
Workaround for the NAT traversal problem.
|
||||||
|
Adjusted the priority between TCP/IP Direct Connection and UDP-based NAT-Traversal. On this version (Ver 4.08), NAT-Traversal will always be used if the client program detects that the specified TCP destination port on the destination server is occupied by non-SoftEther VPN Server. Anyone who faces to the connection problem on the VPN Server which is behind the NAT-box should install this update.
|
||||||
|
|
||||||
|
In the previous version (Ver 4.07), when the VPN Client attempts to connect to the VPN Server, the client firstly establish the connection via the TCP/IP direct protocol. If the TCP connection establishes successfully (in the layer-3) but the TCP port returns non-VPN protocol data (in the layer-7), the protocol error occurs immediately even if the NAT-Traversal connection attempt is still pending. This phenomenon often occurs when the VPN Server is behind the NAT-box, and the NAT-box has a listening TCP-443 port by itself. In that condition, the VPN Client attempts to connect to that TCP-443 port firstly, and the protocol error occurs immediately NAT-box returns non-VPN protocol (e.g. HTML-based administration page).
|
||||||
|
|
||||||
|
In order to work around that, this version (Ver 4.08) of VPN Client changed the behavior. On this version, if the VPN Client detects that the destination TCP Port is occupied by a non-VPN program, then the client will always use NAT-Traversal socket. This minor change will fix the connection problem to VPN servers behind the NATs.
|
||||||
|
|
||||||
|
Note: The built-in NAT-Traversal function on SoftEther VPN is for temporary use only. It is not recommended to keep using UDP-based NAT-Traversal connection to beyond the NAT-box when the VPN Server is behind the NAT-box, for long-term use. It is reported that some cheap NAT-boxes disconnect UDP session in regular period (a few minutes) after NAT-Traversal connection has been made. The strongly recommended method to run VPN Server behind the NAT is to make a TCP port mapping on the NAT-box to transfer incoming VPN connection packets (e.g. TCP port 443) to the private IP address of the VPN Server.
|
||||||
|
|
||||||
|
SoftEther VPN 4.07 Build 9448 (June 6, 2014)
|
||||||
|
We updated the internal OpenSSL to 0.9.8za.
|
||||||
|
This fixes the latest OpenSSL vulnerability which has unfold on June 05.
|
||||||
|
This vulnerability does not affect on SoftEther VPN. However, we updated the SoftEther VPN build with OpenSSL 0.9.8za. The new build also includes additional improvements.
|
||||||
|
More details about this OpenVPN vulnerability is described at http://www.openssl.org/news/secadv_20140605.txt.
|
||||||
|
|
||||||
|
Other updates on this build are as followings:
|
||||||
|
The problem with OpenVPN Connect for Android 1.1.14 has been fixed. In the previous versions, OpenVPN Connect for Android 1.1.14 reports "PolarSSL Error" when it connects to the SoftEther VPN Server, if the server SSL certificate is self-signed root certificate. This X.509 certificate parsing problem is OpenVPN Connect's bug, however we performed work around for this OpenVPN Connect's bug. Please mind that you need to regenerate your self-signed root certificate in order to comply with OpenVPN Connect at once after upgrading the VPN Server to this version. To regenerate the certificate, use the GUI tool on VPN Server Manager, or execute the "ServerCertRegenerate" command on vpncmd.
|
||||||
|
|
||||||
|
The automated root certificate and intermediate certificates downloading function has been implemented. It is very helpful when you use a commercial certificate which has been issued by a commercial CA (Certificate Authority), including VeriSign, GlobalSign or RapidSSL. In previous versions, you had to install the root certificate and intermediate certificates manually into the "chain_certs" directory. On this version, you do not need any longer to do such a manual installation of chained certs.
|
||||||
|
|
||||||
|
The OpenVPN configuration file generating function identifies the root certificate correctly, in order to embed it as the "<ca>" inline directive in the auto-generated OpenVPN configuration file. It is very helpful if you are using a commercial certificate which has been issued by a commercial CA (Certificate Authority), including VeriSign, GlobalSign or RapidSSL. (In previous versions, you had to perform the editing task for the OpenVPN configuration file manually.)
|
||||||
|
|
||||||
|
UI typos have been fixed, and some minor bugs have been fixed.
|
||||||
|
|
||||||
|
SoftEther VPN 4.06 Build 9435 (Beta) (March 26, 2014)
|
||||||
|
Previous versions of VPN Client have a port-confliction problem of the TCP port (TCP 9930) for RPC (Remote Procedure Call) on the VPN Client service for Windows, if the same port is occupied by another service. This version has solved the confliction problem.
|
||||||
|
|
||||||
|
SoftEther VPN 4.06 Build 9433 (Beta) (March 21, 2014)
|
||||||
|
Fixed a crashing bug on NAT-Traversal connections.
|
||||||
|
We sincerely apologize that the SoftEther VPN Server of the last build (Build 9432) has a serious crashing bug if a VPN client connects to the VPN Server in the NAT Traversal mode, in UNIX system. This serious bug was caused by the problem of the processing of Unicode string (which is used by a warning message for NAT Traversal connections). We fixed the serious bug by this Build 9433. If you are using SoftEther VPN Server Build 9430 or 9432 in UNIX, please update it to Build 9433 as soon as possible.
|
||||||
|
|
||||||
|
SoftEther VPN 4.06 Build 9432 (Beta) (March 20, 2014)
|
||||||
|
We apologize that the previous build (Build 9430) has a problem that the RSA certificate authentication doesn't work.
|
||||||
|
This build has been fixed the problem. Please use Build 9432 if you are intending to use the RSA certificate authentication function.
|
||||||
|
|
||||||
|
SoftEther VPN 4.06 Build 9430 (Beta) (March 20, 2014)
|
||||||
|
Thank you for waiting!
|
||||||
|
Added the following five advanced functions into SoftEther VPN Server (experimental) :
|
||||||
|
- RADIUS / NT Domain user authentication function
|
||||||
|
- RSA certificate user authentication function
|
||||||
|
- Deep-inspect packet logging function
|
||||||
|
- Source IP address control list function
|
||||||
|
- syslog transfer function
|
||||||
|
|
||||||
|
Added the split-tunneling function (experimental) :
|
||||||
|
- Split tunneling is the function for enterprises to allow users communicate only to the specified IPv4 subnets through a VPN tunnel.
|
||||||
|
- You can set up either SecureNAT Virtual DHCP Server or any external DHCP server to push static routing tables to all VPN clients.
|
||||||
|
- The Virtual DHCP Server function in SecureNAT now supports classless static routing table pushing option (RFC 3442).
|
||||||
|
- All types of VPN clients (SoftEther VPN Client, OpenVPN Client, L2TP/IPsec client and MS-SSTP client) can receive the static routing table pushed.
|
||||||
|
|
||||||
|
Added the function which allows the VPN server administrator to obtain the DDNS private key on the DDNS setup dialog-box.
|
||||||
|
Improved the behavior of the Privacy Filter Mode security policy. In the previous versions, a VPN session which is enabled the Privacy Filter Mode option cannot transmit any packets toward other Privacy Filter Mode enabled VPN sessions, except broadcast packets and ARP packets. On or after this version, both broadcast packets and ARP packets will also be blocked by the Privacy Filter Mode policy to eliminate the broadcast traffics. For the backward compatibility, this behavior can be changed by the "DropBroadcastsInPrivacyFilterMode" and "DropArpInPrivacyFilterMode" bool options on the Virtual Hub Extended Options.
|
||||||
|
Added the generating function of X.509 v3 certificates with the SHA-2 (SHA-256) hashing algorithm to improve the security.
|
||||||
|
According to the users reports, on very minor Linux environment, the "vpnserver stop" shutdown operation sometimes hangs up. The SoftEther VPN Project hasn't reproduce the issue yet. However, we added the fail-safe code to run "killall -KILL vpnserver" after the process shutdown operation times out (90 seconds).
|
||||||
|
Added the option to disable the NAT Traversal tunneling function on the connection settings screen in VPN Client and Cascade Connection.
|
||||||
|
Added Several Fixes for OS X.
|
||||||
|
Added Improved Simplified Chinese UI resources.
|
||||||
|
Added Workaround for when vpnserver hangs on stop on minor Linux environments.
|
||||||
|
On VPN Servers in People's Republic of China, the above five functions are currently disabled by default, under the orders from Beijing. Although Chinese users can enable these functions manually, Enterprise users in People's Republic of China are recommended to use these enterprise functions with PacketiX VPN Server 4.0 Chinese Edition.
|
||||||
|
|
||||||
|
SoftEther VPN 4.05 Build 9423 (Beta) (February 18, 2014)
|
||||||
|
Added Files for building CentOS/RHEL RPM.
|
||||||
|
Set the "VPN over DNS" and "VPN over ICMP" functions disabled by default on VPN Server / VPN Bridge.
|
||||||
|
|
||||||
|
SoftEther VPN 4.05 Build 9422 (Beta) (February 17, 2014)
|
||||||
|
Added the supporting of /hostname and /password command-line arguments on VPN Client.
|
||||||
|
Added the NSDI 6.x Lightweight Helper Kernel-mode Module for the local-bridge function. This kernel-mode driver runs only on Windows 8.1 / Windows Server 2012 R2 or later.
|
||||||
|
|
||||||
|
SoftEther VPN 4.05 Build 9416 (Beta) (February 6, 2014)
|
||||||
|
Added the support for OpenBSD on the source code.
|
||||||
|
Added the debian packaging on the source code.
|
||||||
|
Added the adminip.txt CIDR support.
|
||||||
|
Added the supporting VLAN for Mac OS X using TunTapOSX.
|
||||||
|
Added the .zip package with vpnsmgr.exe and vpncmd.exe for system administrators.
|
||||||
|
|
||||||
|
SoftEther VPN 4.04 Build 9412 (January 15, 2014)
|
||||||
|
Whole English UI texts are checked and corrected by a native speaker of English. Fixed typos.
|
||||||
|
|
||||||
|
SoftEther VPN 4.03 Build 9411 (January 7, 2014)
|
||||||
|
Modified the source-code tree. In the build 9408, some C# build-utility source codes were missing. In this build, full set of all source codes including the BuildUtil program are appended. No functional differences between this build and the last build.
|
||||||
|
|
||||||
|
SoftEther VPN 4.03 Build 9408 (Jaunary 4, 2014)
|
||||||
|
SoftEther VPN became open source software from this build. More details on this page. Note that the major version 3.xx was skipped for internal reason of our project. So this open-sourced new version starts with major version 4.xx.
|
||||||
|
|
||||||
|
SoftEther VPN 2.00 Build 9387 (September 16, 2013)
|
||||||
|
This build realizes the compatibility with Microsoft Windows 8.1 and Windows Server 2012 R2 (RTM). This build supports Windows 8.1 and Windows Server 2012 R2 officially. This build fixes the former problem when the user upgrades from Windows 8 to Windows 8.1 by upgrade installation.
|
||||||
|
The major version number of SoftEther VPN was incremented on this build.
|
||||||
|
|
||||||
|
SoftEther VPN 1.01 Build 9379 RTM (August 18, 2013)
|
||||||
|
This security update is to strengthen the security of SoftEther VPN 1.0 (Server and Bridge).
|
||||||
|
There is a remote administration function on SoftEther VPN 1.0. The function is to allow administrators to connect to the VPN server remotely to manage the server. In older versions, a third person can login to the VPN Server in the Virtual Hub Administration Mode if the administrator has forgot to set the administrator's password on a Virtual Hub. Older versions are also safe if any strong password is set on the Virtual Hub. However we suppose that there are some administrators who have forgot to set passwords for Virtual Hubs. In order to protect such potential vulnerable servers, this security update strengthens the VPN server program to deny all empty (not set) passwords on the Virtual Hub Administration Mode. Your VPN server has been safe also in older versions if you set any passwords for Virtual Hubs. However, we strongly recommend to apply this update program to all VPN server administrators who might have potential empty passwords on Virtual Hubs.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9376, 9377 RTM (August 3, 2013)
|
||||||
|
This is a minor fix.
|
||||||
|
Improvement Stability of NAT Traversal.
|
||||||
|
Add HTTP User-Agent Indication Behavior when using VPN Gate Client.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9371 RTM (July 25, 2013)
|
||||||
|
This is the RTM version of SoftEther VPN 1.0. It is not a BETA version.
|
||||||
|
We have fixed a lot of bugs in former builds. This RTM build is a stable build for everyone.
|
||||||
|
We will continue to improve features and performances on SoftEther VPN hereafter.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9367 RC4 (July 21, 2013)
|
||||||
|
This should be the final beta release before the RTM version of SoftEther VPN 1.0.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9091 RC3 (May 19, 2013)
|
||||||
|
We released RC3 with the following improvements. RC3 should be the final release candidate before the GA (Generally Available) build.
|
||||||
|
- Fixed a crush bug which might occurred during the shutdown of vpnserver process with using L2TPv3 or EtherIP over IPsec.
|
||||||
|
- The statistics of cumulative transferred-bytes and packets-counter are appended on the list of Visual Hubs and on the list of User Objects on each Virtual Hub, on VPN Server Manager and vpncmd.
|
||||||
|
- On the list of User Objects enumeration in both VPN Server Manager and vpncmd, the expire-date of each User Object are appended on the displayed list.
|
||||||
|
- Improvements of stability of Dynamic DNS Function and NAT-Traversal Function.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9079 RC2 Fix17 (May 5, 2013)
|
||||||
|
Fixed a typo. Fixed a wrong bitmap image on the installer.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9078 RC2 Fix16 (April 28, 2013)
|
||||||
|
A security fix. The previous versions have ignored the "deny_empty_password" option in the Virtual Hub Administration Options List. This build fixed this security bug.
|
||||||
|
Fixed some minor bugs.
|
||||||
|
Improvement of the respond-time on IPv6 DNS name resolver.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9074 RC2 Fix15 (April 24, 2013)
|
||||||
|
Minor improvement around the Dynamic DNS Client function.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9071 RC2 Fix14 (April 20, 2013)
|
||||||
|
Fixed a minor timeout bug.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9070 RC2 Fix13 (April 18, 2013)
|
||||||
|
Enabled advanced security check routines for butter overflow (Win32 binaries only.)
|
||||||
|
File sizes have been increased a little, but the performance wasn't affected.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9069 RC2 Fix12 (April 17, 2013)
|
||||||
|
Fixed a minor bug on SSL packet processing.
|
||||||
|
Fixed a miror bug on TCP listener. (very rare crash)
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9053 RC2 Fix11 (April 8, 2013)
|
||||||
|
Fixed a minor bug on UDP packet processing.
|
||||||
|
Added a new feature: IKE and OpenVPN (in UDP packets) Packet Logging Function.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9045 RC2 Fix10 (April 2, 2013)
|
||||||
|
Fixed a minor bug, and improved the stability.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9043 RC2 Fix9 (April 1, 2013)
|
||||||
|
Fixed a critical bug was in the HTTP packet parser.
|
||||||
|
Improvement of the stability of UDP-based communication.
|
||||||
|
Fixed a problem: SecureNAT's connectivity polling packet interval was too short.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9035 RC2 Fix8 (March 26, 2013)
|
||||||
|
Fixed a crash bug: While you are changeing the X.509 server certificate, if a new SSL-VPN connection is being made, the new connection attempt will cause the crash because lack of critical section locking. However this bug was very rare. We found it in the heavy stress test.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9033 RC2 Fix7 (March 22, 2013)
|
||||||
|
Fixed a minor bug.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9030 RC2 Fix6 (March 21, 2013)
|
||||||
|
Fixed a bug: A logged error message around the L2TP/SSTP/OpenVPN user-authentication was incorrect.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9029 RC2 Fix5 (March 17, 2013)
|
||||||
|
Fixed a minor bug and typo.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9027 RC2 Fix4 (March 12, 2013)
|
||||||
|
Fixed a minor bug.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9026 RC2 Fix3 (March 10, 2013)
|
||||||
|
Fixed a bug: the timeout to the DDNS server was too small.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9024 RC2 Fix2 (March 09, 2013)
|
||||||
|
Fixed a bug: On Windows, VPN over DNS could not be enabled.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9023 RC2 Fix1 (March 08, 2013)
|
||||||
|
Fixed a minor bug.
|
||||||
|
|
||||||
|
SoftEther VPN 1.00 Build 9022 RC2 (March 08, 2013)
|
||||||
|
The initial release.
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
ChangeLog of SoftEther VPN
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
The ChangeLog of SoftEther VPN is on our web site:
|
|
||||||
http://www.softether.org/5-download/history
|
|
||||||
|
|
||||||
(In Japanese: http://ja.softether.org/5-download/history)
|
|
||||||
|
|
||||||
Enjoy it!
|
|
||||||
|
|
6
LICENSE
6
LICENSE
@ -3,9 +3,9 @@ open-source. You can redistribute them and/or modify them under the terms of
|
|||||||
the GNU General Public License version 2 as published by the Free Software
|
the GNU General Public License version 2 as published by the Free Software
|
||||||
Foundation.
|
Foundation.
|
||||||
|
|
||||||
Copyright (c) 2012-2015 Daiyuu Nobori.
|
Copyright (c) Daiyuu Nobori.
|
||||||
Copyright (c) 2012-2015 SoftEther Project at University of Tsukuba, Japan.
|
Copyright (c) SoftEther Project at University of Tsukuba, Japan.
|
||||||
Copyright (c) 2012-2015 SoftEther Corporation.
|
Copyright (c) SoftEther Corporation.
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
http://www.softether.org/
|
http://www.softether.org/
|
||||||
|
|
||||||
|
345
LICENSE.TXT
345
LICENSE.TXT
@ -1,345 +0,0 @@
|
|||||||
SoftEther VPN Server, Client and Bridge are free software, and released as
|
|
||||||
open-source. You can redistribute them and/or modify them under the terms of
|
|
||||||
the GNU General Public License version 2 as published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
Copyright (c) 2012-2015 Daiyuu Nobori.
|
|
||||||
Copyright (c) 2012-2015 SoftEther Project at University of Tsukuba, Japan.
|
|
||||||
Copyright (c) 2012-2015 SoftEther Corporation.
|
|
||||||
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.
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
Neither the name of SoftEther nor the names of its contributors may be used to
|
|
||||||
endorse or promote products derived from this software without specific prior
|
|
||||||
written permission.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN, UNDER
|
|
||||||
JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY, MERGE, PUBLISH,
|
|
||||||
DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS SOFTWARE, THAT ANY
|
|
||||||
JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS SOFTWARE OR ITS CONTENTS,
|
|
||||||
AGAINST US (SOFTETHER PROJECT, SOFTETHER CORPORATION, DAIYUU NOBORI OR OTHER
|
|
||||||
SUPPLIERS), OR ANY JURIDICAL DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND
|
|
||||||
OF USING, COPYING, MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING,
|
|
||||||
AND/OR SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
|
||||||
CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO EXCLUSIVE
|
|
||||||
JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO, JAPAN. YOU MUST WAIVE
|
|
||||||
ALL DEFENSES OF LACK OF PERSONAL JURISDICTION AND FORUM NON CONVENIENS.
|
|
||||||
PROCESS MAY BE SERVED ON EITHER PARTY IN THE MANNER AUTHORIZED BY APPLICABLE
|
|
||||||
LAW OR COURT RULE.
|
|
||||||
|
|
||||||
USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS YOU HAVE
|
|
||||||
A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY CRIMINAL LAWS OR CIVIL
|
|
||||||
RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS SOFTWARE IN OTHER COUNTRIES IS
|
|
||||||
COMPLETELY AT YOUR OWN RISK. THE SOFTETHER VPN PROJECT HAS DEVELOPED AND
|
|
||||||
DISTRIBUTED THIS SOFTWARE TO COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING
|
|
||||||
CIVIL RIGHTS INCLUDING PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER
|
|
||||||
COUNTRIES' LAWS OR CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES.
|
|
||||||
WE HAVE NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
|
||||||
INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+ COUNTRIES
|
|
||||||
AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE WORLD, WITH
|
|
||||||
DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY COUNTRIES' LAWS, REGULATIONS
|
|
||||||
AND CIVIL RIGHTS TO MAKE THE SOFTWARE COMPLY WITH ALL COUNTRIES' LAWS BY THE
|
|
||||||
PROJECT. EVEN IF YOU WILL BE SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A
|
|
||||||
PUBLIC SERVANT IN YOUR COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE
|
|
||||||
LIABLE TO RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
|
||||||
RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT JUST A
|
|
||||||
STATEMENT FOR WARNING AND DISCLAIMER.
|
|
||||||
|
|
||||||
THE FOLLOWING GPLV2 CONDITIONS APPLY ON ALL SOFTETHER VPN PROGRAMS WHICH ARE
|
|
||||||
DEVELOPED BY SOFTETHER VPN PROJECT.
|
|
||||||
|
|
||||||
READ AND UNDERSTAND THE 'WARNING.TXT' FILE BEFORE USING THIS SOFTWARE.
|
|
||||||
SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE WITH
|
|
||||||
LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
|
||||||
document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your freedom to
|
|
||||||
share and change it. By contrast, the GNU General Public License is intended
|
|
||||||
to guarantee your freedom to share and change free software--to make sure the
|
|
||||||
software is free for all its users. This General Public License applies to
|
|
||||||
most of the Free Software Foundation's software and to any other program whose
|
|
||||||
authors commit to using it. (Some other Free Software Foundation software is
|
|
||||||
covered by the GNU Lesser General Public License instead.) You can apply it
|
|
||||||
to your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not price. Our
|
|
||||||
General Public Licenses are designed to make sure that you have the freedom to
|
|
||||||
distribute copies of free software (and charge for this service if you wish),
|
|
||||||
that you receive source code or can get it if you want it, that you can change
|
|
||||||
the software or use pieces of it in new free programs; and that you know you
|
|
||||||
can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid anyone to
|
|
||||||
deny you these rights or to ask you to surrender the rights. These
|
|
||||||
restrictions translate to certain responsibilities for you if you distribute
|
|
||||||
copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether gratis or
|
|
||||||
for a fee, you must give the recipients all the rights that you have. You
|
|
||||||
must make sure that they, too, receive or can get the source code. And you
|
|
||||||
must show them these terms so they know their rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and (2)
|
|
||||||
offer you this license which gives you legal permission to copy, distribute
|
|
||||||
and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain that
|
|
||||||
everyone understands that there is no warranty for this free software. If the
|
|
||||||
software is modified by someone else and passed on, we want its recipients to
|
|
||||||
know that what they have is not the original, so that any problems introduced
|
|
||||||
by others will not reflect on the original authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software patents. We
|
|
||||||
wish to avoid the danger that redistributors of a free program will
|
|
||||||
individually obtain patent licenses, in effect making the program proprietary.
|
|
||||||
To prevent this, we have made it clear that any patent must be licensed for
|
|
||||||
everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and modification
|
|
||||||
follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains a notice
|
|
||||||
placed by the copyright holder saying it may be distributed under the terms of
|
|
||||||
this General Public License. The "Program", below, refers to any such program
|
|
||||||
or work, and a "work based on the Program" means either the Program or any
|
|
||||||
derivative work under copyright law: that is to say, a work containing the
|
|
||||||
Program or a portion of it, either verbatim or with modifications and/or
|
|
||||||
translated into another language. (Hereinafter, translation is included
|
|
||||||
without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not covered
|
|
||||||
by this License; they are outside its scope. The act of running the Program
|
|
||||||
is not restricted, and the output from the Program is covered only if its
|
|
||||||
contents constitute a work based on the Program (independent of having been
|
|
||||||
made by running the Program). Whether that is true depends on what the Program
|
|
||||||
does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Program's source code
|
|
||||||
as you receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice and
|
|
||||||
disclaimer of warranty; keep intact all the notices that refer to this License
|
|
||||||
and to the absence of any warranty; and give any other recipients of the
|
|
||||||
Program a copy of this License along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and you may
|
|
||||||
at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion of it,
|
|
||||||
thus forming a work based on the Program, and copy and distribute such
|
|
||||||
modifications or work under the terms of Section 1 above, provided that you
|
|
||||||
also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices stating
|
|
||||||
that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in whole
|
|
||||||
or in part contains or is derived from the Program or any part thereof, to be
|
|
||||||
licensed as a whole at no charge to all third parties under the terms of this
|
|
||||||
License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively when run,
|
|
||||||
you must cause it, when started running for such interactive use in the most
|
|
||||||
ordinary way, to print or display an announcement including an appropriate
|
|
||||||
copyright notice and a notice that there is no warranty (or else, saying that
|
|
||||||
you provide a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this License.
|
|
||||||
(Exception: if the Program itself is interactive but does not normally print
|
|
||||||
such an announcement, your work based on the Program is not required to print
|
|
||||||
an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If identifiable
|
|
||||||
sections of that work are not derived from the Program, and can be reasonably
|
|
||||||
considered independent and separate works in themselves, then this License,
|
|
||||||
and its terms, do not apply to those sections when you distribute them as
|
|
||||||
separate works. But when you distribute the same sections as part of a whole
|
|
||||||
which is a work based on the Program, the distribution of the whole must be on
|
|
||||||
the terms of this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest your
|
|
||||||
rights to work written entirely by you; rather, the intent is to exercise the
|
|
||||||
right to control the distribution of derivative or collective works based on
|
|
||||||
the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program with
|
|
||||||
the Program (or with a work based on the Program) on a volume of a storage or
|
|
||||||
distribution medium does not bring the other work under the scope of this
|
|
||||||
License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it, under
|
|
||||||
Section 2) in object code or executable form under the terms of Sections 1 and
|
|
||||||
2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable source
|
|
||||||
code, which must be distributed under the terms of Sections 1 and 2 above on a
|
|
||||||
medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three years, to
|
|
||||||
give any third party, for a charge no more than your cost of physically
|
|
||||||
performing source distribution, a complete machine-readable copy of the
|
|
||||||
corresponding source code, to be distributed under the terms of Sections 1 and
|
|
||||||
2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer to
|
|
||||||
distribute corresponding source code. (This alternative is allowed only for
|
|
||||||
noncommercial distribution and only if you received the program in object code
|
|
||||||
or executable form with such an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for making
|
|
||||||
modifications to it. For an executable work, complete source code means all
|
|
||||||
the source code for all modules it contains, plus any associated interface
|
|
||||||
definition files, plus the scripts used to control compilation and
|
|
||||||
installation of the executable. However, as a special exception, the source
|
|
||||||
code distributed need not include anything that is normally distributed (in
|
|
||||||
either source or binary form) with the major components (compiler, kernel, and
|
|
||||||
so on) of the operating system on which the executable runs, unless that
|
|
||||||
component itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering access to
|
|
||||||
copy from a designated place, then offering equivalent access to copy the
|
|
||||||
source code from the same place counts as distribution of the source code,
|
|
||||||
even though third parties are not compelled to copy the source along with the
|
|
||||||
object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program except as
|
|
||||||
expressly provided under this License. Any attempt otherwise to copy, modify,
|
|
||||||
sublicense or distribute the Program is void, and will automatically terminate
|
|
||||||
your rights under this License. However, parties who have received copies, or
|
|
||||||
rights, from you under this License will not have their licenses terminated so
|
|
||||||
long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not signed
|
|
||||||
it. However, nothing else grants you permission to modify or distribute the
|
|
||||||
Program or its derivative works. These actions are prohibited by law if you
|
|
||||||
do not accept this License. Therefore, by modifying or distributing the
|
|
||||||
Program (or any work based on the Program), you indicate your acceptance of
|
|
||||||
this License to do so, and all its terms and conditions for copying,
|
|
||||||
distributing or modifying the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the original
|
|
||||||
licensor to copy, distribute or modify the Program subject to these terms and
|
|
||||||
conditions. You may not impose any further restrictions on the recipients'
|
|
||||||
exercise of the rights granted herein. You are not responsible for enforcing
|
|
||||||
compliance by third parties to this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or otherwise)
|
|
||||||
that contradict the conditions of this License, they do not excuse you from
|
|
||||||
the conditions of this License. If you cannot distribute so as to satisfy
|
|
||||||
simultaneously your obligations under this License and any other pertinent
|
|
||||||
obligations, then as a consequence you may not distribute the Program at all.
|
|
||||||
For example, if a patent license would not permit royalty-free redistribution
|
|
||||||
of the Program by all those who receive copies directly or indirectly through
|
|
||||||
you, then the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under any
|
|
||||||
particular circumstance, the balance of the section is intended to apply and
|
|
||||||
the section as a whole is intended to apply in other circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any patents or
|
|
||||||
other property right claims or to contest validity of any such claims; this
|
|
||||||
section has the sole purpose of protecting the integrity of the free software
|
|
||||||
distribution system, which is implemented by public license practices. Many
|
|
||||||
people have made generous contributions to the wide range of software
|
|
||||||
distributed through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing to
|
|
||||||
distribute software through any other system and a licensee cannot impose that
|
|
||||||
choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to be a
|
|
||||||
consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in certain
|
|
||||||
countries either by patents or by copyrighted interfaces, the original
|
|
||||||
copyright holder who places the Program under this License may add an explicit
|
|
||||||
geographical distribution limitation excluding those countries, so that
|
|
||||||
distribution is permitted only in or among countries not thus excluded. In
|
|
||||||
such case, this License incorporates the limitation as if written in the body
|
|
||||||
of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the General Public License from time to time. Such new versions will be
|
|
||||||
similar in spirit to the present version, but may differ in detail to address
|
|
||||||
new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Program
|
|
||||||
specifies a version number of this License which applies to it and "any later
|
|
||||||
version", you have the option of following the terms and conditions either of
|
|
||||||
that version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of this License,
|
|
||||||
you may choose any version ever published by the Free Software Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free programs
|
|
||||||
whose distribution conditions are different, write to the author to ask for
|
|
||||||
permission. For software which is copyrighted by the Free Software
|
|
||||||
Foundation, write to the Free Software Foundation; we sometimes make
|
|
||||||
exceptions for this. Our decision will be guided by the two goals of
|
|
||||||
preserving the free status of all derivatives of our free software and of
|
|
||||||
promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
|
||||||
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
|
||||||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
|
|
||||||
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
|
||||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
|
|
||||||
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
||||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
|
|
||||||
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
|
|
||||||
THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
|
|
||||||
READ AND UNDERSTAND THE 'WARNING.TXT' FILE BEFORE USING THIS SOFTWARE.
|
|
||||||
SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE WITH
|
|
||||||
LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
|
|
||||||
|
|
61
README
61
README
@ -1,16 +1,28 @@
|
|||||||
SoftEther VPN - An Open-Source Cross-platform Multi-protocol VPN Program
|
SoftEther VPN (Developer Edition Master Repository)
|
||||||
|
- An Open-Source Cross-platform Multi-protocol VPN Program
|
||||||
http://www.softether.org/
|
http://www.softether.org/
|
||||||
|
|
||||||
We use GitHub as the primary official SoftEther VPN repository:
|
|
||||||
https://github.com/SoftEtherVPN/SoftEtherVPN/
|
|
||||||
|
|
||||||
Source code packages (.zip and .tar.gz) and binary files are also available:
|
This repository has experimental codes. Pull requests are welcome.
|
||||||
|
|
||||||
|
Stable Edition is available on
|
||||||
|
https://github.com/SoftEtherVPN/SoftEtherVPN_Stable
|
||||||
|
which the non-developer user can stable use.
|
||||||
|
|
||||||
|
Source code packages (.zip and .tar.gz) and binary files of Stable Edition are also available:
|
||||||
http://www.softether-download.com/
|
http://www.softether-download.com/
|
||||||
|
|
||||||
We accept your patches by the acceptance policy:
|
We accept your patches by the acceptance policy:
|
||||||
http://www.softether.org/5-download/src/9.patch
|
http://www.softether.org/5-download/src/9.patch
|
||||||
|
|
||||||
Copyright (c) 2012-2015 SoftEther Project at University of Tsukuba, Japan.
|
Copyright (c) SoftEther Project at University of Tsukuba, Japan.
|
||||||
|
|
||||||
|
The development of SoftEther VPN was supported by the MITOH Project,
|
||||||
|
a research and development project by Japanese Government,
|
||||||
|
subsidized by Ministry of Economy, Trade and Industry of Japan,
|
||||||
|
administrated by Information Promotion Agency.
|
||||||
|
https://www.ipa.go.jp/english/humandev/
|
||||||
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License version 2
|
it under the terms of the GNU General Public License version 2
|
||||||
@ -28,6 +40,23 @@ by the single SoftEther VPN Server program.
|
|||||||
More details on http://www.softether.org/.
|
More details on http://www.softether.org/.
|
||||||
|
|
||||||
|
|
||||||
|
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
|
SOFTETHER VPN ADVANTAGES
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
@ -123,24 +152,9 @@ on all the following open-source repositories:
|
|||||||
- GitHub
|
- GitHub
|
||||||
https://github.com/SoftEtherVPN/SoftEtherVPN/
|
https://github.com/SoftEtherVPN/SoftEtherVPN/
|
||||||
|
|
||||||
- SourceForge
|
|
||||||
https://sourceforge.net/p/softethervpn/code/ci/master/tree/
|
|
||||||
|
|
||||||
- Google Code
|
|
||||||
https://code.google.com/p/softether/source/browse/
|
|
||||||
|
|
||||||
|
|
||||||
To fetch the source code from GitHub:
|
To fetch the source code from GitHub:
|
||||||
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
|
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
|
||||||
|
|
||||||
To fetch the source code from SourceForge:
|
|
||||||
$ git clone http://git.code.sf.net/p/softethervpn/code
|
|
||||||
- or -
|
|
||||||
$ git clone git://git.code.sf.net/p/softethervpn/code
|
|
||||||
|
|
||||||
To fetch the source code from Google Code:
|
|
||||||
$ git clone https://code.google.com/p/softether/
|
|
||||||
|
|
||||||
We hope that you can reach one of the above URLs at least!
|
We hope that you can reach one of the above URLs at least!
|
||||||
|
|
||||||
|
|
||||||
@ -218,10 +232,3 @@ SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE
|
|||||||
WITH LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
|
WITH LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
|
||||||
|
|
||||||
|
|
||||||
ADVERTISEMENT
|
|
||||||
-------------
|
|
||||||
|
|
||||||
SoftEther VPN is developed by SoftEther VPN Project at University of Tsukuba.
|
|
||||||
Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
|
||||||
|
227
README.TXT
227
README.TXT
@ -1,227 +0,0 @@
|
|||||||
SoftEther VPN - An Open-Source Cross-platform Multi-protocol VPN Program
|
|
||||||
http://www.softether.org/
|
|
||||||
|
|
||||||
We use GitHub as the primary official SoftEther VPN repository:
|
|
||||||
https://github.com/SoftEtherVPN/SoftEtherVPN/
|
|
||||||
|
|
||||||
Source code packages (.zip and .tar.gz) and binary files are also available:
|
|
||||||
http://www.softether-download.com/
|
|
||||||
|
|
||||||
We accept your patches by the acceptance policy:
|
|
||||||
http://www.softether.org/5-download/src/9.patch
|
|
||||||
|
|
||||||
Copyright (c) 2012-2015 SoftEther Project at University of Tsukuba, Japan.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
SoftEther VPN ("SoftEther" means "Software Ethernet") is one of the
|
|
||||||
world's most powerful and easy-to-use multi-protocol VPN software.
|
|
||||||
|
|
||||||
SoftEther VPN runs on Windows, Linux, Mac, FreeBSD and Solaris.
|
|
||||||
|
|
||||||
SoftEther VPN supports most of widely-used VPN protocols
|
|
||||||
including SSL-VPN, OpenVPN, IPsec, L2TP, MS-SSTP, L2TPv3 and EtherIP
|
|
||||||
by the single SoftEther VPN Server program.
|
|
||||||
|
|
||||||
More details on http://www.softether.org/.
|
|
||||||
|
|
||||||
|
|
||||||
SOFTETHER VPN ADVANTAGES
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
- Supporting all popular VPN protocols by the single VPN server:
|
|
||||||
SSL-VPN (HTTPS)
|
|
||||||
OpenVPN
|
|
||||||
IPsec
|
|
||||||
L2TP
|
|
||||||
MS-SSTP
|
|
||||||
L2TPv3
|
|
||||||
EtherIP
|
|
||||||
- Free and open-source software.
|
|
||||||
- Easy to establish both remote-access and site-to-site VPN.
|
|
||||||
- SSL-VPN Tunneling on HTTPS to pass through NATs and firewalls.
|
|
||||||
- Revolutionary VPN over ICMP and VPN over DNS features.
|
|
||||||
- Resistance to highly-restricted firewall.
|
|
||||||
- Ethernet-bridging (L2) and IP-routing (L3) over VPN.
|
|
||||||
- Embedded dynamic-DNS and NAT-traversal so that no static nor
|
|
||||||
fixed IP address is required.
|
|
||||||
- AES 256-bit and RSA 4096-bit encryptions.
|
|
||||||
- Sufficient security features such as logging and firewall inner
|
|
||||||
VPN tunnel.
|
|
||||||
- User authentication with RADIUS and NT domain controllers.
|
|
||||||
- User authentication with X.509 client certificate.
|
|
||||||
- Packet logging.
|
|
||||||
- 1Gbps-class high-speed throughput performance with low memory and
|
|
||||||
CPU usage.
|
|
||||||
- Windows, Linux, Mac, Android, iPhone, iPad and Windows Phone are
|
|
||||||
supported.
|
|
||||||
- The OpenVPN clone function supports legacy OpenVPN clients.
|
|
||||||
- IPv4 / IPv6 dual-stack.
|
|
||||||
- The VPN server runs on Windows, Linux, FreeBSD, Solaris and Mac OS X.
|
|
||||||
- Configure All settings on GUI.
|
|
||||||
- Multi-languages (English, Japanese and Simplified-Chinese).
|
|
||||||
- No memory leaks. High quality stable codes, intended for long-term runs.
|
|
||||||
We always verify that there are no memory or resource leaks before
|
|
||||||
releasing the build.
|
|
||||||
- More details at http://www.softether.org/.
|
|
||||||
|
|
||||||
|
|
||||||
GETTING STARTED
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Visit the SoftEther VPN Project official web site at first:
|
|
||||||
http://www.softether.org/
|
|
||||||
|
|
||||||
If you are not a developer, it is recommended to download the binary
|
|
||||||
installers from:
|
|
||||||
http://www.softether-download.com/
|
|
||||||
|
|
||||||
To build from the source,
|
|
||||||
see "BUILD_UNIX.TXT" or "BUILD_WINDOWS.TXT" files.
|
|
||||||
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
This is the easiest way to obtain the source code of SoftEther VPN.
|
|
||||||
|
|
||||||
|
|
||||||
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/
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
|
|
||||||
$ cd SoftEtherVPN
|
|
||||||
$ ./configure
|
|
||||||
$ make
|
|
||||||
$ make install
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
of SoftEther VPN, by abusing their censorship firewalls.
|
|
||||||
|
|
||||||
To circumvent your censor's unjust restriction,
|
|
||||||
SoftEther VPN Project distributes the up-to-date source-code
|
|
||||||
on all the following open-source repositories:
|
|
||||||
|
|
||||||
- GitHub
|
|
||||||
https://github.com/SoftEtherVPN/SoftEtherVPN/
|
|
||||||
|
|
||||||
- SourceForge
|
|
||||||
https://sourceforge.net/p/softethervpn/code/ci/master/tree/
|
|
||||||
|
|
||||||
- Google Code
|
|
||||||
https://code.google.com/p/softether/source/browse/
|
|
||||||
|
|
||||||
|
|
||||||
To fetch the source code from GitHub:
|
|
||||||
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
|
|
||||||
|
|
||||||
To fetch the source code from SourceForge:
|
|
||||||
$ git clone http://git.code.sf.net/p/softethervpn/code
|
|
||||||
- or -
|
|
||||||
$ git clone git://git.code.sf.net/p/softethervpn/code
|
|
||||||
|
|
||||||
To fetch the source code from Google Code:
|
|
||||||
$ git clone https://code.google.com/p/softether/
|
|
||||||
|
|
||||||
We hope that you can reach one of the above URLs at least!
|
|
||||||
|
|
||||||
|
|
||||||
SOURCE CODE CONTRIBUTION
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
Your contribution to SoftEther VPN Project is much appreciated.
|
|
||||||
Please send patches to us through GitHub.
|
|
||||||
Read the SoftEther VPN Patch Acceptance Policy in advance:
|
|
||||||
http://www.softether.org/5-download/src/9.patch
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
to protect a lot of users around the world as soon as possible.
|
|
||||||
|
|
||||||
Our e-mail address for security reports is:
|
|
||||||
softether-vpn-security [at] softether.org
|
|
||||||
|
|
||||||
Please note that the above e-mail address is not a technical support
|
|
||||||
inquiry address. If you need technical assistance, please visit
|
|
||||||
http://www.softether.org/ and ask your question on the users forum.
|
|
||||||
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
----------
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
|
||||||
UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
|
||||||
MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
|
||||||
SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
|
||||||
SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
|
||||||
CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
|
||||||
DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
|
||||||
MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
|
||||||
SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
|
||||||
CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
|
||||||
EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
|
||||||
JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
|
||||||
AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
|
||||||
THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
|
||||||
|
|
||||||
USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
|
||||||
YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
|
||||||
CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
|
||||||
SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
|
||||||
SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
|
||||||
COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
|
||||||
PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
|
||||||
CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
|
||||||
NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
|
||||||
INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
|
||||||
COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
|
||||||
WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
|
||||||
COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
|
||||||
COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
|
||||||
SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
|
||||||
COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
|
||||||
RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
|
||||||
RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
|
||||||
JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
|
||||||
|
|
||||||
READ AND UNDERSTAND THE 'WARNING.TXT' FILE BEFORE USING THIS SOFTWARE.
|
|
||||||
SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE
|
|
||||||
WITH LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
|
|
||||||
|
|
||||||
|
|
||||||
ADVERTISEMENT
|
|
||||||
-------------
|
|
||||||
|
|
||||||
SoftEther VPN is developed by SoftEther VPN Project at University of Tsukuba.
|
|
||||||
Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
|
@ -722,65 +722,3 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
Issue Date: Aug 6, 2010
|
Issue Date: Aug 6, 2010
|
||||||
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
NOTES WRITTEN BY SOFTETHER CORPORATION
|
|
||||||
|
|
||||||
Note for users of non-Windows version of PacketiX VPN: The enumerated bundle
|
|
||||||
of License Agreements above are copies of original License Agreements of each
|
|
||||||
library programs which PacketiX VPN uses. PacketiX VPN is not a delivered work
|
|
||||||
from these libraries. PacketiX VPN is a separated work from the libraries, but
|
|
||||||
it may call functions of the libraries (whether or not PacketiX VPN calls such
|
|
||||||
functions are depended on the user's intention to link them or not on user's
|
|
||||||
side computer). While some libraries indicate GPL or LGPL as a condition to
|
|
||||||
re-distribute, PacketiX VPN is not license under GPL nor LGPL. Therefore, we
|
|
||||||
took special care not to make PacketiX VPN become delivered works of any GPL
|
|
||||||
or LGPL libraries. In order to achieve that, both PacketiX VPN and GPL/LGPL
|
|
||||||
libraries are distributed with isolated forms (means that any program files of
|
|
||||||
PacketiX VPN are not bound nor linked to any GPL/LGPL libraries). If a user of
|
|
||||||
PacketiX VPN wants to link GPL/LGPL libraries by their own decisions,
|
|
||||||
operations and responsibilities, he may do that on his computer. However, if a
|
|
||||||
delivered work under copyright law is created as a result of such an
|
|
||||||
operation, such a delivered work must not re-distributed to other people,
|
|
||||||
because it may violate GPL/LGPL libraries' conditions.
|
|
||||||
|
|
||||||
Note for users of Windows version of PacketiX VPN: For technical reason, the
|
|
||||||
above texts are exactly same as a file which is also contained on the
|
|
||||||
non-Windows version of PacketiX VPN. Actually, the Windows version of PacketiX
|
|
||||||
VPN has no relations to any GPL/LGPL libraries enumerated above.
|
|
||||||
|
|
||||||
SoftEther Corporation provides source codes of some GPL/LGPL/other libraries
|
|
||||||
listed above on its web server. Anyone can download, use and re-distribute
|
|
||||||
them under individual licenses which are contained on each archive file,
|
|
||||||
available from the following URL:
|
|
||||||
http://uploader.softether.co.jp/src/
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Copyright Notes and Acknowledgments for PacketiX VPN (Commercial Version):
|
|
||||||
|
|
||||||
PacketiX VPN has some contributed codes from SoftEther VPN Project
|
|
||||||
(http://www.softether.org/).
|
|
||||||
These contributed codes have been granted by contributors to be imported into
|
|
||||||
the PacketiX VPN source-tree without GPLv2 conditions.
|
|
||||||
|
|
||||||
The list of contributors for SoftEther VPN Project:
|
|
||||||
|
|
||||||
- Melvyn
|
|
||||||
https://github.com/yaurthek
|
|
||||||
|
|
||||||
- nattoheaven
|
|
||||||
https://github.com/nattoheaven
|
|
||||||
|
|
||||||
- ELIN
|
|
||||||
https://github.com/el1n
|
|
||||||
|
|
||||||
- YF
|
|
||||||
https://github.com/yfdyh000
|
|
||||||
|
|
||||||
|
|
||||||
SoftEther Corporation, the distributor of PacketiX VPN, appreciates all
|
|
||||||
contributors for SoftEther VPN Project very much.
|
|
||||||
|
|
||||||
See also: http://www.softether.org/5-download/src/9.patch
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ THE IMPORTANT NOTICES ABOUT SOFTETHER VPN
|
|||||||
|
|
||||||
FUNCTIONS OF VPN COMMUNICATIONS EMBEDDED ON THIS SOFTWARE ARE VERY POWERFUL
|
FUNCTIONS OF VPN COMMUNICATIONS EMBEDDED ON THIS SOFTWARE ARE VERY POWERFUL
|
||||||
THAN EVER. THIS STRONG VPN ABILITY WILL BRING YOU HUGE BENEFITS. HOWEVER, IF
|
THAN EVER. THIS STRONG VPN ABILITY WILL BRING YOU HUGE BENEFITS. HOWEVER, IF
|
||||||
YOU MISUSE THIS SOFTWARE, IT MIGHT DAMAGES YOURSELF. IN ORDER TO AVOID SUCH
|
YOU MISUSE THIS SOFTWARE, IT MIGHT DAMAGE YOURSELF. IN ORDER TO AVOID SUCH
|
||||||
RISKS, THIS DOCUMENT ACCOUNTS IMPORTANT NOTICES FOR CUSTOMERS WHO ARE WILLING
|
RISKS, THIS DOCUMENT ACCOUNTS IMPORTANT NOTICES FOR CUSTOMERS WHO ARE WILLING
|
||||||
TO USE THIS SOFTWARE. THE FOLLOWING INSTRUCTIONS ARE VERY IMPORTANT. READ AND
|
TO USE THIS SOFTWARE. THE FOLLOWING INSTRUCTIONS ARE VERY IMPORTANT. READ AND
|
||||||
UNDERSTAND IT CAREFULLY. ADDITIONALLY, IF YOU ARE PLANNING TO USE THE DYNAMIC
|
UNDERSTAND IT CAREFULLY. ADDITIONALLY, IF YOU ARE PLANNING TO USE THE DYNAMIC
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# SoftEther VPN Source Code
|
# SoftEther VPN Source Code
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012-2015 SoftEther VPN Project at University of Tsukuba, Japan.
|
# Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.
|
||||||
# Copyright (c) 2012-2015 Daiyuu Nobori.
|
# Copyright (c) Daiyuu Nobori.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
# http://www.softether.org/
|
# http://www.softether.org/
|
||||||
@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s
|
|||||||
HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h
|
HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h
|
||||||
OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o
|
OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o
|
||||||
OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o
|
OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o
|
||||||
HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css
|
HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/root_certs.dat src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css
|
||||||
|
|
||||||
# Build Action
|
# Build Action
|
||||||
default: build
|
default: build
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# SoftEther VPN Source Code
|
# SoftEther VPN Source Code
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012-2015 SoftEther VPN Project at University of Tsukuba, Japan.
|
# Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.
|
||||||
# Copyright (c) 2012-2015 Daiyuu Nobori.
|
# Copyright (c) Daiyuu Nobori.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
# http://www.softether.org/
|
# http://www.softether.org/
|
||||||
@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s
|
|||||||
HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h
|
HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h
|
||||||
OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o
|
OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o
|
||||||
OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o
|
OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o
|
||||||
HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css
|
HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/root_certs.dat src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css
|
||||||
|
|
||||||
# Build Action
|
# Build Action
|
||||||
default: build
|
default: build
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
%define majorversion 4.04
|
%define majorversion 4
|
||||||
%define minorversion 9412
|
%define minorversion 19
|
||||||
%define dateversion 2014.01.15
|
%define buildversion 9582
|
||||||
|
%define dateversion 2015.10.06
|
||||||
|
%define buildrelease beta
|
||||||
|
|
||||||
Name: softethervpn
|
Name: softethervpn
|
||||||
Version: %{majorversion}.%{minorversion}
|
Version: %{majorversion}.%{minorversion}.%{buildversion}
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: An Open-Source Free Cross-platform Multi-protocol VPN Program
|
Summary: An Open-Source Free Cross-platform Multi-protocol VPN Program
|
||||||
|
|
||||||
Group: Applications/Internet
|
Group: Applications/Internet
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: http://www.softether.org/
|
URL: http://www.softether.org/
|
||||||
Source0: http://www.softether-download.com/files/softether/v%{majorversion}-%{minorversion}-rtm-%{dateversion}-tree/Source%20Code/softether-src-v%{majorversion}-%{minorversion}-rtm.tar.gz
|
Source0: http://www.softether-download.com/files/softether/v%{majorversion}.%{minorversion}-%{buildversion}-%{buildrelease}-%{dateversion}-tree/Source_Code/softether-src-v%{majorversion}.%{minorversion}-%{buildversion}-%{buildrelease}.tar.gz
|
||||||
|
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
BuildRequires: openssl-devel
|
BuildRequires: openssl-devel
|
||||||
@ -25,7 +27,7 @@ Requires(preun): initscripts
|
|||||||
SoftEther VPN is one of the world's most powerful and easy-to-use multi-protocol VPN software. It runs on Windows, Linux, Mac, FreeBSD, and Solaris.
|
SoftEther VPN is one of the world's most powerful and easy-to-use multi-protocol VPN software. It runs on Windows, Linux, Mac, FreeBSD, and Solaris.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n v%{majorversion}-%{minorversion}
|
%setup -q -n v%{majorversion}.%{minorversion}-%{buildversion}
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%ifarch i386 i686
|
%ifarch i386 i686
|
||||||
@ -85,6 +87,12 @@ if [ $1 -eq 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Sep 30 2015 Jeff Tang <mrjefftang@gmail.com> - 4.19.9582-1
|
||||||
|
- Update upstream to 4.19.9582-beta
|
||||||
|
|
||||||
|
* Wed Sep 30 2015 Jeff Tang <mrjefftang@gmail.com> - 4.19.9577-1
|
||||||
|
- Update upstream to 4.19.9577
|
||||||
|
|
||||||
* Wed Jan 29 2014 Dexter Ang <thepoch@gmail.com> - 4.04.9412-2
|
* Wed Jan 29 2014 Dexter Ang <thepoch@gmail.com> - 4.04.9412-2
|
||||||
- Made initscript more Fedora/RH-like.
|
- Made initscript more Fedora/RH-like.
|
||||||
- initscript currently using killall. Need to fix this.
|
- initscript currently using killall. Need to fix this.
|
||||||
@ -92,4 +100,3 @@ fi
|
|||||||
* Tue Jan 21 2014 Dexter Ang <thepoch@gmail.com>
|
* Tue Jan 21 2014 Dexter Ang <thepoch@gmail.com>
|
||||||
- Initial release
|
- Initial release
|
||||||
|
|
||||||
|
|
||||||
|
119
configure
vendored
119
configure
vendored
@ -16,68 +16,97 @@ echo
|
|||||||
|
|
||||||
echo 'Welcome to the corner-cutting configure script !'
|
echo 'Welcome to the corner-cutting configure script !'
|
||||||
echo
|
echo
|
||||||
echo 'Select your operating system below:'
|
|
||||||
echo ' 1: Linux'
|
|
||||||
echo ' 2: FreeBSD'
|
|
||||||
echo ' 3: Solaris'
|
|
||||||
echo ' 4: Mac OS X'
|
|
||||||
echo ' 5: OpenBSD'
|
|
||||||
echo
|
|
||||||
echo -n 'Which is your operating system (1 - 5) ? : '
|
|
||||||
read TMP
|
|
||||||
echo
|
|
||||||
OS=""
|
OS=""
|
||||||
if test "$TMP" = "1"
|
case "`uname -s`" in
|
||||||
then
|
Linux)
|
||||||
OS="linux"
|
OS="linux"
|
||||||
fi
|
;;
|
||||||
if test "$TMP" = "2"
|
FreeBSD)
|
||||||
then
|
|
||||||
OS="freebsd"
|
OS="freebsd"
|
||||||
fi
|
;;
|
||||||
if test "$TMP" = "3"
|
SunOS)
|
||||||
then
|
|
||||||
OS="solaris"
|
OS="solaris"
|
||||||
fi
|
;;
|
||||||
if test "$TMP" = "4"
|
Darwin)
|
||||||
then
|
|
||||||
OS="macos"
|
OS="macos"
|
||||||
fi
|
;;
|
||||||
if test "$TMP" = "5"
|
OpenBSD)
|
||||||
then
|
|
||||||
OS="openbsd"
|
OS="openbsd"
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
echo 'Select your operating system below:'
|
||||||
|
echo ' 1: Linux'
|
||||||
|
echo ' 2: FreeBSD'
|
||||||
|
echo ' 3: Solaris'
|
||||||
|
echo ' 4: Mac OS X'
|
||||||
|
echo ' 5: OpenBSD'
|
||||||
|
echo
|
||||||
|
echo -n 'Which is your operating system (1 - 5) ? : '
|
||||||
|
read TMP
|
||||||
|
echo
|
||||||
|
if test "$TMP" = "1"
|
||||||
|
then
|
||||||
|
OS="linux"
|
||||||
|
fi
|
||||||
|
if test "$TMP" = "2"
|
||||||
|
then
|
||||||
|
OS="freebsd"
|
||||||
|
fi
|
||||||
|
if test "$TMP" = "3"
|
||||||
|
then
|
||||||
|
OS="solaris"
|
||||||
|
fi
|
||||||
|
if test "$TMP" = "4"
|
||||||
|
then
|
||||||
|
OS="macos"
|
||||||
|
fi
|
||||||
|
if test "$TMP" = "5"
|
||||||
|
then
|
||||||
|
OS="openbsd"
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$OS" = ""
|
if test "$OS" = ""
|
||||||
then
|
then
|
||||||
echo "Wrong number."
|
echo "Wrong number."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
echo 'Select your CPU bits below:'
|
|
||||||
echo ' 1: 32-bit'
|
|
||||||
echo ' 2: 64-bit'
|
|
||||||
echo
|
|
||||||
echo -n 'Which is the type of your CPU (1 - 2) ? : '
|
|
||||||
read TMP
|
|
||||||
echo
|
|
||||||
CPU=""
|
CPU=""
|
||||||
if test "$TMP" = "1"
|
case "`uname -m`" in
|
||||||
then
|
x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64)
|
||||||
|
CPU=64bit
|
||||||
|
;;
|
||||||
|
i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*)
|
||||||
|
CPU=32bit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo 'Select your CPU bits below:'
|
||||||
|
echo ' 1: 32-bit'
|
||||||
|
echo ' 2: 64-bit'
|
||||||
|
echo
|
||||||
|
echo -n 'Which is the type of your CPU (1 - 2) ? : '
|
||||||
|
read TMP
|
||||||
|
echo
|
||||||
|
if test "$TMP" = "1"
|
||||||
|
then
|
||||||
CPU="32bit"
|
CPU="32bit"
|
||||||
fi
|
fi
|
||||||
if test "$TMP" = "2"
|
if test "$TMP" = "2"
|
||||||
then
|
then
|
||||||
CPU="64bit"
|
CPU="64bit"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$CPU" = ""
|
if test "$CPU" = ""
|
||||||
then
|
then
|
||||||
echo "Wrong number."
|
echo "Wrong number."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
cp src/makefiles/${OS}_${CPU}.mak Makefile
|
cp src/makefiles/${OS}_${CPU}.mak Makefile
|
||||||
|
|
||||||
echo "The Makefile is generated. Run 'make' to build SoftEther VPN."
|
echo "The Makefile is generated. Run 'make' to build SoftEther VPN."
|
||||||
|
|
||||||
|
9
debian/rules
vendored
9
debian/rules
vendored
@ -18,7 +18,10 @@ override_dh_auto_install:
|
|||||||
make install
|
make install
|
||||||
|
|
||||||
configure_config:
|
configure_config:
|
||||||
if [ $(shell uname -m) = 'x86_64' ]; then echo "1\n2\n" | ./configure; fi
|
if [ $(shell uname -m) = 'x86_64' ]; then echo -e "1\n2\n" | ./configure; fi
|
||||||
if [ $(shell uname -m) = 'i686' ]; then echo "1\n1\n" | ./configure; fi
|
if [ $(shell uname -m) = 'i686' ]; then echo -e "1\n1\n" | ./configure; fi
|
||||||
if [ $(shell uname -m) = 'armv6l' ]; then echo "1\n1\n" | ./configure; fi
|
if [ $(shell uname -m) = 'armv6l' ]; then echo -e "1\n1\n" | ./configure; fi
|
||||||
|
if [ $(shell uname -m) = 'armv5tel' ]; then echo -e "1\n1\n" | ./configure; fi
|
||||||
|
if [ $(shell uname -m) = 'aarch64' ]; then echo -e "1\n2\n" | ./configure; fi
|
||||||
|
if [ $(shell uname -m) = 'armv7l' ]; then echo -e "1\n1\n" | ./configure; fi
|
||||||
|
|
||||||
|
14
debian/softether-vpnserver.init
vendored
14
debian/softether-vpnserver.init
vendored
@ -1,4 +1,18 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: softether-vpnserver
|
||||||
|
# Required-Start: $network $remote_fs $syslog
|
||||||
|
# Required-Stop: $network $remote_fs $syslog
|
||||||
|
# Should-Start: network-manager
|
||||||
|
# Should-Stop: network-manager
|
||||||
|
# X-Start-Before: $x-display-manager gdm kdm xdm wdm ldm sdm nodm
|
||||||
|
# X-Interactive: true
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: SoftEther VPN service
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
#
|
#
|
||||||
# Author: Dmitry Orlov <me@mosquito.su>
|
# Author: Dmitry Orlov <me@mosquito.su>
|
||||||
# From Debian skeleton (Tom deLombarde)
|
# From Debian skeleton (Tom deLombarde)
|
||||||
|
@ -9,6 +9,7 @@ You need to install the following software to build SoftEther VPN for Windows.
|
|||||||
|
|
||||||
- Microsoft Windows XP, Vista, 7, 8 or later.
|
- Microsoft Windows XP, Vista, 7, 8 or later.
|
||||||
- Microsoft Visual Studio 2008 with the latest SP (SP1 9.0.30729.4462 QFE).
|
- 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:
|
* Note:
|
||||||
Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows.
|
Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows.
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -12,14 +12,14 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "041104b0"
|
BLOCK "041104b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "SoftEther VPN Project at University of Tsukuba, Japan. (Open-source Customized Build)"
|
VALUE "CompanyName", "SoftEther VPN Project at University of Tsukuba, Japan. (Developer Edition)"
|
||||||
VALUE "FileDescription", "$PRODUCTNAME$ (Open-source Customized Build)"
|
VALUE "FileDescription", "$PRODUCTNAME$ (Developer Edition)"
|
||||||
VALUE "FileVersion", "$VER_MAJOR$, $VER_MINOR$, 0, $VER_BUILD$"
|
VALUE "FileVersion", "$VER_MAJOR$, $VER_MINOR$, 0, $VER_BUILD$"
|
||||||
VALUE "InternalName", "$INTERNALNAME$ (Open-source Customized Build)"
|
VALUE "InternalName", "$INTERNALNAME$ (Developer Edition)"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2012-$YEAR$ SoftEther VPN Project. All Rights Reserved. (Open-source Customized Build)"
|
VALUE "LegalCopyright", "Copyright (C) 2012-$YEAR$ SoftEther VPN Project. All Rights Reserved. (Developer Edition)"
|
||||||
VALUE "LegalTrademarks", "SoftEther(R) is a registered trademark of SoftEther Corporation in Japan, United Status and People's Republic of China. SoftEther Corporation is a company founded at University of Tsukuba, Japan."
|
VALUE "LegalTrademarks", "SoftEther(R) is a registered trademark of SoftEther Corporation in Japan, United Status and People's Republic of China. SoftEther Corporation is a company founded at University of Tsukuba, Japan."
|
||||||
VALUE "OriginalFilename", "$FILENAME$"
|
VALUE "OriginalFilename", "$FILENAME$"
|
||||||
VALUE "ProductName", "$PRODUCTNAME$ (Open-source Customized Build)"
|
VALUE "ProductName", "$PRODUCTNAME$ (Developer Edition)"
|
||||||
VALUE "ProductVersion", "$VER_MAJOR$, $VER_MINOR$, 0, $VER_BUILD$"
|
VALUE "ProductVersion", "$VER_MAJOR$, $VER_MINOR$, 0, $VER_BUILD$"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -926,6 +926,19 @@ namespace BuildUtil
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Driver package build
|
||||||
|
// Win32 build
|
||||||
|
[ConsoleCommandMethod(
|
||||||
|
"Builds the driver package.",
|
||||||
|
"BuildDriverPackage",
|
||||||
|
"Builds the driver package.")]
|
||||||
|
static int BuildDriverPackage(ConsoleService c, string cmdName, string str)
|
||||||
|
{
|
||||||
|
Win32BuildUtil.MakeDriverPackage();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Win32 build
|
// Win32 build
|
||||||
[ConsoleCommandMethod(
|
[ConsoleCommandMethod(
|
||||||
"Builds all executable files for win32 and HamCore for all OS.",
|
"Builds all executable files for win32 and HamCore for all OS.",
|
||||||
@ -1159,14 +1172,16 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
new ConsoleParam("[targetFileName]", ConsoleService.Prompt, "Target Filename: ", ConsoleService.EvalNotEmpty, null),
|
new ConsoleParam("[targetFileName]", ConsoleService.Prompt, "Target Filename: ", ConsoleService.EvalNotEmpty, null),
|
||||||
new ConsoleParam("OUT", ConsoleService.Prompt, "Dst Filename: ", ConsoleService.EvalNotEmpty, null),
|
new ConsoleParam("OUT", ConsoleService.Prompt, "Dst Filename: ", ConsoleService.EvalNotEmpty, null),
|
||||||
|
new ConsoleParam("PRODUCT"),
|
||||||
new ConsoleParam("RC"),
|
new ConsoleParam("RC"),
|
||||||
};
|
};
|
||||||
ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);
|
ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);
|
||||||
|
|
||||||
string targetFilename = vl.DefaultParam.StrValue;
|
string targetFilename = vl.DefaultParam.StrValue;
|
||||||
string outFilename = vl["OUT"].StrValue;
|
string outFilename = vl["OUT"].StrValue;
|
||||||
|
string product_name = vl["PRODUCT"].StrValue;
|
||||||
|
|
||||||
Win32BuildUtil.GenerateVersionInfoResource(targetFilename, outFilename, vl["RC"].StrValue);
|
Win32BuildUtil.GenerateVersionInfoResource(targetFilename, outFilename, vl["RC"].StrValue, product_name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1307,6 +1322,8 @@ namespace BuildUtil
|
|||||||
new ConsoleParam("DEST"),
|
new ConsoleParam("DEST"),
|
||||||
new ConsoleParam("COMMENT", ConsoleService.Prompt, "Comment: ", ConsoleService.EvalNotEmpty, null),
|
new ConsoleParam("COMMENT", ConsoleService.Prompt, "Comment: ", ConsoleService.EvalNotEmpty, null),
|
||||||
new ConsoleParam("KERNEL"),
|
new ConsoleParam("KERNEL"),
|
||||||
|
new ConsoleParam("CERTID"),
|
||||||
|
new ConsoleParam("SHAMODE"),
|
||||||
};
|
};
|
||||||
ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);
|
ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);
|
||||||
|
|
||||||
@ -1319,14 +1336,13 @@ namespace BuildUtil
|
|||||||
string comment = vl["COMMENT"].StrValue;
|
string comment = vl["COMMENT"].StrValue;
|
||||||
bool kernel = vl["KERNEL"].BoolValue;
|
bool kernel = vl["KERNEL"].BoolValue;
|
||||||
|
|
||||||
CodeSign.SignFile(destFileName, srcFileName, comment, kernel);
|
int certid = vl["CERTID"].IntValue;
|
||||||
|
int shamode = vl["SHAMODE"].IntValue;
|
||||||
|
|
||||||
|
CodeSign.SignFile(destFileName, srcFileName, comment, kernel, certid, shamode);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -217,7 +217,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -155,7 +155,7 @@ namespace BuildUtil
|
|||||||
static object lockObj = new object();
|
static object lockObj = new object();
|
||||||
|
|
||||||
// Digital-sign the data on the memory
|
// Digital-sign the data on the memory
|
||||||
public static byte[] SignMemory(byte[] srcData, string comment, bool kernelModeDriver, int cert_id)
|
public static byte[] SignMemory(byte[] srcData, string comment, bool kernelModeDriver, int cert_id, int sha_mode)
|
||||||
{
|
{
|
||||||
#if !BU_OSS
|
#if !BU_OSS
|
||||||
int i;
|
int i;
|
||||||
@ -176,10 +176,11 @@ namespace BuildUtil
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
out_filename = sign.ExecSign(Path.GetFileName(in_tmp_filename),
|
out_filename = sign.ExecSignEx(Path.GetFileName(in_tmp_filename),
|
||||||
kernelModeDriver,
|
kernelModeDriver,
|
||||||
comment,
|
comment,
|
||||||
cert_id);
|
cert_id,
|
||||||
|
sha_mode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -259,15 +260,26 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
int cert_id = UsingCertId;
|
int cert_id = UsingCertId;
|
||||||
|
|
||||||
SignFile(destFileName, srcFileName, comment, kernelModeDriver, cert_id);
|
SignFile(destFileName, srcFileName, comment, kernelModeDriver, cert_id, 0);
|
||||||
}
|
}
|
||||||
public static void SignFile(string destFileName, string srcFileName, string comment, bool kernelModeDriver, int cert_id)
|
public static void SignFile(string destFileName, string srcFileName, string comment, bool kernelModeDriver, int cert_id, int sha_mode)
|
||||||
{
|
{
|
||||||
#if !BU_OSS
|
#if !BU_OSS
|
||||||
|
if (cert_id == 0)
|
||||||
|
{
|
||||||
|
cert_id = UsingCertId;
|
||||||
|
}
|
||||||
|
|
||||||
Con.WriteLine("Signing for '{0}'...", Path.GetFileName(destFileName));
|
Con.WriteLine("Signing for '{0}'...", Path.GetFileName(destFileName));
|
||||||
byte[] srcData = File.ReadAllBytes(srcFileName);
|
byte[] srcData = File.ReadAllBytes(srcFileName);
|
||||||
|
|
||||||
byte[] destData = SignMemory(srcData, comment, kernelModeDriver, cert_id);
|
if (srcFileName.EndsWith(".msi", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
sha_mode = 1;
|
||||||
|
// todo: Set 2 in future !!!
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] destData = SignMemory(srcData, comment, kernelModeDriver, cert_id, sha_mode);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -287,7 +299,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -212,7 +212,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -697,7 +697,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -344,7 +344,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -206,7 +206,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -2204,7 +2204,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -521,7 +521,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -596,7 +596,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1726,7 +1726,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -257,7 +257,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -194,7 +194,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -963,7 +963,3 @@ public class MultiLanguageFilterStream : Stream
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -226,7 +226,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -249,7 +249,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -330,7 +330,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -561,7 +561,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1053,7 +1053,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -376,7 +376,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -4401,7 +4401,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -454,7 +454,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -566,7 +566,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -198,7 +198,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1058,7 +1058,3 @@ namespace CoreUtil
|
|||||||
public string XsdFileName;
|
public string XsdFileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -327,7 +327,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -506,7 +506,3 @@ namespace CoreUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -255,7 +255,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
4
src/BuildUtil/Properties/Resources.Designer.cs
generated
4
src/BuildUtil/Properties/Resources.Designer.cs
generated
@ -1073,7 +1073,3 @@ namespace BuildUtil.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
4
src/BuildUtil/Properties/Settings.Designer.cs
generated
4
src/BuildUtil/Properties/Settings.Designer.cs
generated
@ -139,7 +139,3 @@ namespace BuildUtil.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -139,17 +139,7 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
public static void Test()
|
public static void Test()
|
||||||
{
|
{
|
||||||
Language[] langs = BuildHelper.GetLanguageList();
|
Win32BuildUtil.MakeDriverPackage();
|
||||||
|
|
||||||
foreach (Language e in langs)
|
|
||||||
{
|
|
||||||
Con.WriteLine("{0} {1} {2} {3} {5} {4}",
|
|
||||||
e.Number, e.Id, e.Title, e.TitleUnicode, e.UnixLocaleIds, e.WindowsLocaleIds);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -690,7 +690,30 @@ namespace BuildUtil
|
|||||||
#else
|
#else
|
||||||
sr.WriteLine("\t@echo \"And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure {0}.\"", BuildHelper.GetSoftwareTitle(this.Software));
|
sr.WriteLine("\t@echo \"And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure {0}.\"", BuildHelper.GetSoftwareTitle(this.Software));
|
||||||
#endif
|
#endif
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
#if !BU_SOFTETHER
|
||||||
sr.WriteLine("\t@echo \"Of course, you can use the VPN Server Manager GUI Application for Windows on the other Windows PC in order to configure the {0} remotely.\"", BuildHelper.GetSoftwareTitle(this.Software));
|
sr.WriteLine("\t@echo \"Of course, you can use the VPN Server Manager GUI Application for Windows on the other Windows PC in order to configure the {0} remotely.\"", BuildHelper.GetSoftwareTitle(this.Software));
|
||||||
|
#else
|
||||||
|
sr.WriteLine("\t@echo \"Of course, you can use the VPN Server Manager GUI Application for Windows / Mac OS X on the other Windows / Mac OS X computers in order to configure the {0} remotely.\"", BuildHelper.GetSoftwareTitle(this.Software));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !BU_SOFTETHER
|
||||||
|
#else
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
sr.WriteLine("\t@echo \"*** For Windows users ***\"");
|
||||||
|
sr.WriteLine("\t@echo \"You can download the SoftEther VPN Server Manager for Windows\"");
|
||||||
|
sr.WriteLine("\t@echo \"from the http://www.softether-download.com/ web site.\"");
|
||||||
|
sr.WriteLine("\t@echo \"This manager application helps you to completely and easily manage the VPN server services running in remote hosts.\"");
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
sr.WriteLine("\t@echo \"*** For Mac OS X users ***\"");
|
||||||
|
sr.WriteLine("\t@echo \"In April 2016 we released the SoftEther VPN Server Manager for Mac OS X.\"");
|
||||||
|
sr.WriteLine("\t@echo \"You can download it from the http://www.softether-download.com/ web site.\"");
|
||||||
|
sr.WriteLine("\t@echo \"VPN Server Manager for Mac OS X works perfectly as same as the traditional Windows versions. It helps you to completely and easily manage the VPN server services running in remote hosts.\"");
|
||||||
|
sr.WriteLine("\t@echo");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
sr.WriteLine("\t@echo \"--------------------------------------------------------------------\"");
|
sr.WriteLine("\t@echo \"--------------------------------------------------------------------\"");
|
||||||
sr.WriteLine("\t@echo");
|
sr.WriteLine("\t@echo");
|
||||||
@ -1059,7 +1082,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -689,7 +689,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -138,7 +138,7 @@ namespace BuildUtil
|
|||||||
// Build settings
|
// Build settings
|
||||||
public static class BuildConfig
|
public static class BuildConfig
|
||||||
{
|
{
|
||||||
public static readonly int NumMultipleCompileTasks = 4;
|
public static readonly int NumMultipleCompileTasks = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Software List
|
// Software List
|
||||||
@ -430,7 +430,7 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
// Windows
|
// Windows
|
||||||
public static readonly OS Windows = new OS("windows", "Windows",
|
public static readonly OS Windows = new OS("windows", "Windows",
|
||||||
"Windows 98 / 98 SE / ME / NT 4.0 SP6a / 2000 SP4 / XP SP2, SP3 / Vista SP1, SP2 / 7 SP1 / 8 / 8.1 / Server 2003 SP2 / Server 2008 SP1, SP2 / Hyper-V Server 2008 / Server 2008 R2 SP1 / Hyper-V Server 2008 R2 / Server 2012 / Hyper-V Server 2012 / Server 2012 R2 / Hyper-V Server 2012 R2",
|
"Windows 98 / 98 SE / ME / NT 4.0 SP6a / 2000 SP4 / XP SP2, SP3 / Vista SP1, SP2 / 7 SP1 / 8 / 8.1 / 10 / Server 2003 SP2 / Server 2008 SP1, SP2 / Hyper-V Server 2008 / Server 2008 R2 SP1 / Hyper-V Server 2008 R2 / Server 2012 / Hyper-V Server 2012 / Server 2012 R2 / Hyper-V Server 2012 R2 / Server 2016",
|
||||||
new Cpu[]
|
new Cpu[]
|
||||||
{
|
{
|
||||||
CpuList.intel,
|
CpuList.intel,
|
||||||
@ -438,7 +438,7 @@ namespace BuildUtil
|
|||||||
|
|
||||||
// Linux
|
// Linux
|
||||||
public static readonly OS Linux = new OS("linux", "Linux",
|
public static readonly OS Linux = new OS("linux", "Linux",
|
||||||
"Linux Kernel 2.4 / 2.6 / 3.x",
|
"Linux Kernel 2.4 / 2.6 / 3.x / 4.x",
|
||||||
new Cpu[]
|
new Cpu[]
|
||||||
{
|
{
|
||||||
CpuList.x86,
|
CpuList.x86,
|
||||||
@ -564,7 +564,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -327,7 +327,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// このコードはツールによって生成されました。
|
// このコードはツールによって生成されました。
|
||||||
// ランタイム バージョン:2.0.50727.5466
|
// ランタイム バージョン:2.0.50727.5485
|
||||||
//
|
//
|
||||||
// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
|
// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
|
||||||
// コードが再生成されるときに損失したりします。
|
// コードが再生成されるときに損失したりします。
|
||||||
@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// このソース コードは Microsoft.VSDesigner、バージョン 2.0.50727.5466 によって自動生成されました。
|
// このソース コードは Microsoft.VSDesigner、バージョン 2.0.50727.5485 によって自動生成されました。
|
||||||
//
|
//
|
||||||
#pragma warning disable 1591
|
#pragma warning disable 1591
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ namespace BuildUtil.HvSignService {
|
|||||||
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5420")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
[System.Web.Services.WebServiceBindingAttribute(Name="SignSoap", Namespace="http://hvsigncode/")]
|
[System.Web.Services.WebServiceBindingAttribute(Name="SignSoap", Namespace="http://hvsigncode/")]
|
||||||
@ -128,6 +128,8 @@ namespace BuildUtil.HvSignService {
|
|||||||
|
|
||||||
private System.Threading.SendOrPostCallback ExecSignOperationCompleted;
|
private System.Threading.SendOrPostCallback ExecSignOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback ExecSignExOperationCompleted;
|
||||||
|
|
||||||
private bool useDefaultCredentialsSetExplicitly;
|
private bool useDefaultCredentialsSetExplicitly;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
@ -172,6 +174,9 @@ namespace BuildUtil.HvSignService {
|
|||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event ExecSignCompletedEventHandler ExecSignCompleted;
|
public event ExecSignCompletedEventHandler ExecSignCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event ExecSignExCompletedEventHandler ExecSignExCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://hvsigncode/HelloWorld", RequestNamespace="http://hvsigncode/", ResponseNamespace="http://hvsigncode/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://hvsigncode/HelloWorld", RequestNamespace="http://hvsigncode/", ResponseNamespace="http://hvsigncode/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public string HelloWorld() {
|
public string HelloWorld() {
|
||||||
@ -234,6 +239,43 @@ namespace BuildUtil.HvSignService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://hvsigncode/ExecSignEx", RequestNamespace="http://hvsigncode/", ResponseNamespace="http://hvsigncode/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string ExecSignEx(string src_filename, bool driver_mode, string description, int cert_id, int sha_mode) {
|
||||||
|
object[] results = this.Invoke("ExecSignEx", new object[] {
|
||||||
|
src_filename,
|
||||||
|
driver_mode,
|
||||||
|
description,
|
||||||
|
cert_id,
|
||||||
|
sha_mode});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ExecSignExAsync(string src_filename, bool driver_mode, string description, int cert_id, int sha_mode) {
|
||||||
|
this.ExecSignExAsync(src_filename, driver_mode, description, cert_id, sha_mode, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ExecSignExAsync(string src_filename, bool driver_mode, string description, int cert_id, int sha_mode, object userState) {
|
||||||
|
if ((this.ExecSignExOperationCompleted == null)) {
|
||||||
|
this.ExecSignExOperationCompleted = new System.Threading.SendOrPostCallback(this.OnExecSignExOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("ExecSignEx", new object[] {
|
||||||
|
src_filename,
|
||||||
|
driver_mode,
|
||||||
|
description,
|
||||||
|
cert_id,
|
||||||
|
sha_mode}, this.ExecSignExOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnExecSignExOperationCompleted(object arg) {
|
||||||
|
if ((this.ExecSignExCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.ExecSignExCompleted(this, new ExecSignExCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
@ -254,11 +296,11 @@ namespace BuildUtil.HvSignService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5420")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
public delegate void HelloWorldCompletedEventHandler(object sender, HelloWorldCompletedEventArgs e);
|
public delegate void HelloWorldCompletedEventHandler(object sender, HelloWorldCompletedEventArgs e);
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5420")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
public partial class HelloWorldCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
public partial class HelloWorldCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
@ -280,11 +322,11 @@ namespace BuildUtil.HvSignService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5420")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
public delegate void ExecSignCompletedEventHandler(object sender, ExecSignCompletedEventArgs e);
|
public delegate void ExecSignCompletedEventHandler(object sender, ExecSignCompletedEventArgs e);
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5420")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
public partial class ExecSignCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
public partial class ExecSignCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
@ -304,9 +346,32 @@ namespace BuildUtil.HvSignService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
|
public delegate void ExecSignExCompletedEventHandler(object sender, ExecSignExCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.5483")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class ExecSignExCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal ExecSignExCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning restore 1591
|
#pragma warning restore 1591
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -29,6 +29,24 @@
|
|||||||
</s:sequence>
|
</s:sequence>
|
||||||
</s:complexType>
|
</s:complexType>
|
||||||
</s:element>
|
</s:element>
|
||||||
|
<s:element name="ExecSignEx">
|
||||||
|
<s:complexType>
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1" name="src_filename" type="s:string" />
|
||||||
|
<s:element minOccurs="1" maxOccurs="1" name="driver_mode" type="s:boolean" />
|
||||||
|
<s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
|
||||||
|
<s:element minOccurs="1" maxOccurs="1" name="cert_id" type="s:int" />
|
||||||
|
<s:element minOccurs="1" maxOccurs="1" name="sha_mode" type="s:int" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:complexType>
|
||||||
|
</s:element>
|
||||||
|
<s:element name="ExecSignExResponse">
|
||||||
|
<s:complexType>
|
||||||
|
<s:sequence>
|
||||||
|
<s:element minOccurs="0" maxOccurs="1" name="ExecSignExResult" type="s:string" />
|
||||||
|
</s:sequence>
|
||||||
|
</s:complexType>
|
||||||
|
</s:element>
|
||||||
</s:schema>
|
</s:schema>
|
||||||
</wsdl:types>
|
</wsdl:types>
|
||||||
<wsdl:message name="HelloWorldSoapIn">
|
<wsdl:message name="HelloWorldSoapIn">
|
||||||
@ -43,6 +61,12 @@
|
|||||||
<wsdl:message name="ExecSignSoapOut">
|
<wsdl:message name="ExecSignSoapOut">
|
||||||
<wsdl:part name="parameters" element="tns:ExecSignResponse" />
|
<wsdl:part name="parameters" element="tns:ExecSignResponse" />
|
||||||
</wsdl:message>
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ExecSignExSoapIn">
|
||||||
|
<wsdl:part name="parameters" element="tns:ExecSignEx" />
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ExecSignExSoapOut">
|
||||||
|
<wsdl:part name="parameters" element="tns:ExecSignExResponse" />
|
||||||
|
</wsdl:message>
|
||||||
<wsdl:portType name="SignSoap">
|
<wsdl:portType name="SignSoap">
|
||||||
<wsdl:operation name="HelloWorld">
|
<wsdl:operation name="HelloWorld">
|
||||||
<wsdl:input message="tns:HelloWorldSoapIn" />
|
<wsdl:input message="tns:HelloWorldSoapIn" />
|
||||||
@ -52,6 +76,10 @@
|
|||||||
<wsdl:input message="tns:ExecSignSoapIn" />
|
<wsdl:input message="tns:ExecSignSoapIn" />
|
||||||
<wsdl:output message="tns:ExecSignSoapOut" />
|
<wsdl:output message="tns:ExecSignSoapOut" />
|
||||||
</wsdl:operation>
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ExecSignEx">
|
||||||
|
<wsdl:input message="tns:ExecSignExSoapIn" />
|
||||||
|
<wsdl:output message="tns:ExecSignExSoapOut" />
|
||||||
|
</wsdl:operation>
|
||||||
</wsdl:portType>
|
</wsdl:portType>
|
||||||
<wsdl:binding name="SignSoap" type="tns:SignSoap">
|
<wsdl:binding name="SignSoap" type="tns:SignSoap">
|
||||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||||
@ -73,6 +101,15 @@
|
|||||||
<soap:body use="literal" />
|
<soap:body use="literal" />
|
||||||
</wsdl:output>
|
</wsdl:output>
|
||||||
</wsdl:operation>
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ExecSignEx">
|
||||||
|
<soap:operation soapAction="http://hvsigncode/ExecSignEx" style="document" />
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal" />
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
</wsdl:binding>
|
</wsdl:binding>
|
||||||
<wsdl:binding name="SignSoap12" type="tns:SignSoap">
|
<wsdl:binding name="SignSoap12" type="tns:SignSoap">
|
||||||
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||||
@ -94,6 +131,15 @@
|
|||||||
<soap12:body use="literal" />
|
<soap12:body use="literal" />
|
||||||
</wsdl:output>
|
</wsdl:output>
|
||||||
</wsdl:operation>
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ExecSignEx">
|
||||||
|
<soap12:operation soapAction="http://hvsigncode/ExecSignEx" style="document" />
|
||||||
|
<wsdl:input>
|
||||||
|
<soap12:body use="literal" />
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap12:body use="literal" />
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
</wsdl:binding>
|
</wsdl:binding>
|
||||||
<wsdl:service name="Sign">
|
<wsdl:service name="Sign">
|
||||||
<wsdl:port name="SignSoap" binding="tns:SignSoap">
|
<wsdl:port name="SignSoap" binding="tns:SignSoap">
|
||||||
|
@ -306,6 +306,3 @@ namespace BuildUtil.SignService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning restore 1591
|
#pragma warning restore 1591
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -184,7 +184,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Build Utility
|
// Build Utility
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -181,7 +181,7 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate a version information resource
|
// Generate a version information resource
|
||||||
public static void GenerateVersionInfoResource(string targetExeName, string outName, string rc_name)
|
public static void GenerateVersionInfoResource(string targetExeName, string outName, string rc_name, string product_name)
|
||||||
{
|
{
|
||||||
int build, version;
|
int build, version;
|
||||||
string name;
|
string name;
|
||||||
@ -199,11 +199,18 @@ namespace BuildUtil
|
|||||||
string exeFileName = Path.GetFileName(targetExeName);
|
string exeFileName = Path.GetFileName(targetExeName);
|
||||||
string internalName = Path.GetFileNameWithoutExtension(exeFileName);
|
string internalName = Path.GetFileNameWithoutExtension(exeFileName);
|
||||||
|
|
||||||
|
if (Str.IsEmptyStr(product_name) == false)
|
||||||
|
{
|
||||||
|
body = Str.ReplaceStr(body, "$PRODUCTNAME$", product_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
#if !BU_SOFTETHER
|
#if !BU_SOFTETHER
|
||||||
body = Str.ReplaceStr(body, "$PRODUCTNAME$", "PacketiX VPN");
|
body = Str.ReplaceStr(body, "$PRODUCTNAME$", "PacketiX VPN");
|
||||||
#else
|
#else
|
||||||
body = Str.ReplaceStr(body, "$PRODUCTNAME$", "SoftEther VPN");
|
body = Str.ReplaceStr(body, "$PRODUCTNAME$", "SoftEther VPN");
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
body = Str.ReplaceStr(body, "$INTERNALNAME$", internalName);
|
body = Str.ReplaceStr(body, "$INTERNALNAME$", internalName);
|
||||||
body = Str.ReplaceStr(body, "$YEAR$", date.Year.ToString());
|
body = Str.ReplaceStr(body, "$YEAR$", date.Year.ToString());
|
||||||
body = Str.ReplaceStr(body, "$FILENAME$", exeFileName);
|
body = Str.ReplaceStr(body, "$FILENAME$", exeFileName);
|
||||||
@ -818,6 +825,10 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (Str.InStr(fileName, "DriverPackages", false))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (Str.InStr(fileName, "_nosign", false))
|
if (Str.InStr(fileName, "_nosign", false))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -908,14 +919,27 @@ namespace BuildUtil
|
|||||||
{
|
{
|
||||||
|
|
||||||
string cdfFileName = Path.Combine(dstDir, "inf.cdf");
|
string cdfFileName = Path.Combine(dstDir, "inf.cdf");
|
||||||
|
string cdfFileName2 = Path.Combine(dstDir, "inf2.cdf");
|
||||||
string catFileName = Path.Combine(dstDir, "inf.cat");
|
string catFileName = Path.Combine(dstDir, "inf.cat");
|
||||||
|
string catFileName2 = Path.Combine(dstDir, "inf2.cat");
|
||||||
StringWriter sw = new StringWriter();
|
StringWriter sw = new StringWriter();
|
||||||
|
StringWriter sw2 = new StringWriter();
|
||||||
|
|
||||||
string txt = File.ReadAllText(inf, Str.ShiftJisEncoding);
|
string txt = File.ReadAllText(inf, Str.ShiftJisEncoding);
|
||||||
|
|
||||||
IO.DeleteFilesAndSubDirsInDir(dstDir);
|
IO.DeleteFilesAndSubDirsInDir(dstDir);
|
||||||
IO.MakeDirIfNotExists(dstDir);
|
IO.MakeDirIfNotExists(dstDir);
|
||||||
|
|
||||||
|
string utility_dirname = Path.Combine(Paths.BaseDirName, @"BuildFiles\Utility");
|
||||||
|
string makecat1 = Path.Combine(dstDir, "makecat.exe");
|
||||||
|
string makecat2 = Path.Combine(dstDir, "makecat.exe.manifest");
|
||||||
|
string makecat3 = Path.Combine(dstDir, "Microsoft.Windows.Build.Signing.wintrust.dll.manifest");
|
||||||
|
string makecat4 = Path.Combine(dstDir, "wintrust.dll");
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "makecat.exe"), makecat1, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "makecat.exe.manifest"), makecat2, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "Microsoft.Windows.Build.Signing.wintrust.dll.manifest"), makecat3, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "wintrust.dll"), makecat4, true);
|
||||||
|
|
||||||
string dst_sys_name = Path.Combine(dstDir, Path.GetFileName(sys));
|
string dst_sys_name = Path.Combine(dstDir, Path.GetFileName(sys));
|
||||||
File.Copy(sys, dst_sys_name, true);
|
File.Copy(sys, dst_sys_name, true);
|
||||||
|
|
||||||
@ -927,14 +951,28 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
sw.WriteLine("[CatalogHeader]");
|
sw.WriteLine("[CatalogHeader]");
|
||||||
|
sw2.WriteLine("[CatalogHeader]");
|
||||||
|
|
||||||
sw.WriteLine("name=inf.cat");
|
sw.WriteLine("name=inf.cat");
|
||||||
|
sw2.WriteLine("name=inf2.cat");
|
||||||
|
|
||||||
|
sw2.WriteLine("CatalogVersion=2");
|
||||||
|
sw2.WriteLine("HashAlgorithms=SHA256");
|
||||||
|
sw2.WriteLine("PageHashes=true");
|
||||||
|
|
||||||
sw.WriteLine();
|
sw.WriteLine();
|
||||||
|
sw2.WriteLine();
|
||||||
|
|
||||||
sw.WriteLine("[CatalogFiles]");
|
sw.WriteLine("[CatalogFiles]");
|
||||||
|
sw2.WriteLine("[CatalogFiles]");
|
||||||
|
|
||||||
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys_name));
|
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys_name));
|
||||||
|
sw2.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys_name));
|
||||||
|
|
||||||
if (sys6 != null)
|
if (sys6 != null)
|
||||||
{
|
{
|
||||||
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys6_name));
|
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys6_name));
|
||||||
|
sw2.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_sys6_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
@ -982,6 +1020,7 @@ namespace BuildUtil
|
|||||||
File.WriteAllText(dst_inf_name, body, Str.ShiftJisEncoding);
|
File.WriteAllText(dst_inf_name, body, Str.ShiftJisEncoding);
|
||||||
|
|
||||||
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_inf_name));
|
sw.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_inf_name));
|
||||||
|
sw2.WriteLine("<hash>{0}={0}", Path.GetFileName(dst_inf_name));
|
||||||
|
|
||||||
if (selow)
|
if (selow)
|
||||||
{
|
{
|
||||||
@ -989,28 +1028,350 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sw.WriteLine();
|
sw.WriteLine();
|
||||||
|
sw2.WriteLine();
|
||||||
|
|
||||||
File.WriteAllText(cdfFileName, sw.ToString());
|
File.WriteAllText(cdfFileName, sw.ToString());
|
||||||
|
File.WriteAllText(cdfFileName2, sw2.ToString());
|
||||||
|
|
||||||
// generate catalog file
|
// generate catalog file
|
||||||
Directory.SetCurrentDirectory(dstDir);
|
Directory.SetCurrentDirectory(dstDir);
|
||||||
ExecCommand(Paths.MakeCatFilename, string.Format("\"{0}\"", cdfFileName));
|
ExecCommand(Paths.MakeCatFilename, string.Format("\"{0}\"", cdfFileName));
|
||||||
|
ExecCommand(makecat1, string.Format("\"{0}\"", cdfFileName2));
|
||||||
|
|
||||||
// sign catalog file
|
// sign catalog file
|
||||||
CodeSign.SignFile(catFileName, catFileName, "Catalog File", false);
|
CodeSign.SignFile(catFileName, catFileName, "Catalog File", false);
|
||||||
|
CodeSign.SignFile(catFileName2, catFileName2, "Catalog File", false);
|
||||||
|
|
||||||
// delete cdf file
|
// delete cdf file
|
||||||
File.Delete(cdfFileName);
|
File.Delete(cdfFileName);
|
||||||
|
File.Delete(cdfFileName2);
|
||||||
|
|
||||||
// delete sys file
|
// delete sys file
|
||||||
File.Delete(dst_sys_name);
|
File.Delete(dst_sys_name);
|
||||||
|
|
||||||
|
File.Delete(makecat1);
|
||||||
|
File.Delete(makecat2);
|
||||||
|
File.Delete(makecat3);
|
||||||
|
File.Delete(makecat4);
|
||||||
|
|
||||||
if (sys6 != null)
|
if (sys6 != null)
|
||||||
{
|
{
|
||||||
File.Delete(dst_sys6_name);
|
File.Delete(dst_sys6_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static string process_inf_file(string src_inf_txt, int build, int ver, DateTime date, string sys_name, string name, string catfile, bool replace_mac_address)
|
||||||
|
{
|
||||||
|
string body = src_inf_txt;
|
||||||
|
|
||||||
|
if (Str.IsEmptyStr(sys_name) == false)
|
||||||
|
{
|
||||||
|
body = Str.ReplaceStr(body, "$TAG_SYS_NAME$", sys_name);
|
||||||
|
}
|
||||||
|
if (Str.IsEmptyStr(name) == false)
|
||||||
|
{
|
||||||
|
body = Str.ReplaceStr(body, "$TAG_INSTANCE_NAME$", name);
|
||||||
|
}
|
||||||
|
if (replace_mac_address)
|
||||||
|
{
|
||||||
|
body = Str.ReplaceStr(body, "$TAG_MAC_ADDRESS$", "000001000001");
|
||||||
|
}
|
||||||
|
body = Str.ReplaceStr(body, "$YEAR$", date.Year.ToString("D4"));
|
||||||
|
body = Str.ReplaceStr(body, "$MONTH$", date.Month.ToString("D2"));
|
||||||
|
body = Str.ReplaceStr(body, "$DAY$", date.Day.ToString("D2"));
|
||||||
|
body = Str.ReplaceStr(body, "$VER_MAJOR$", (ver / 100).ToString());
|
||||||
|
body = Str.ReplaceStr(body, "$VER_MINOR$", (ver % 100).ToString());
|
||||||
|
body = Str.ReplaceStr(body, "$VER_BUILD$", build.ToString());
|
||||||
|
|
||||||
|
if (Str.IsEmptyStr(catfile) == false)
|
||||||
|
{
|
||||||
|
body = Str.ReplaceStr(body, "$CATALOG_FILENAME$", catfile);
|
||||||
|
body = Str.ReplaceStr(body, ";CatalogFile.NT", "CatalogFile.NT");
|
||||||
|
}
|
||||||
|
|
||||||
|
body += "\r\n; Auto Generated " + Str.DateTimeToStrShortWithMilliSecs(DateTime.Now) + "\r\n\r\n";
|
||||||
|
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void make_cat_file(string dir, string[] filename_list, string catname, bool win8, bool no_sign)
|
||||||
|
{
|
||||||
|
string utility_dirname = Path.Combine(Paths.BaseDirName, @"BuildFiles\Utility");
|
||||||
|
string makecat1 = Path.Combine(dir, "makecat.exe");
|
||||||
|
string makecat2 = Path.Combine(dir, "makecat.exe.manifest");
|
||||||
|
string makecat3 = Path.Combine(dir, "Microsoft.Windows.Build.Signing.wintrust.dll.manifest");
|
||||||
|
string makecat4 = Path.Combine(dir, "wintrust.dll");
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "makecat.exe"), makecat1, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "makecat.exe.manifest"), makecat2, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "Microsoft.Windows.Build.Signing.wintrust.dll.manifest"), makecat3, true);
|
||||||
|
File.Copy(Path.Combine(utility_dirname, "wintrust.dll"), makecat4, true);
|
||||||
|
|
||||||
|
StringWriter sw2 = new StringWriter();
|
||||||
|
sw2.WriteLine("[CatalogHeader]");
|
||||||
|
sw2.WriteLine("name=" + catname);
|
||||||
|
|
||||||
|
if (win8)
|
||||||
|
{
|
||||||
|
sw2.WriteLine("CatalogVersion=2");
|
||||||
|
sw2.WriteLine("HashAlgorithms=SHA256");
|
||||||
|
sw2.WriteLine("PageHashes=true");
|
||||||
|
}
|
||||||
|
|
||||||
|
sw2.WriteLine();
|
||||||
|
|
||||||
|
sw2.WriteLine("[CatalogFiles]");
|
||||||
|
|
||||||
|
foreach (string filename in filename_list)
|
||||||
|
{
|
||||||
|
sw2.WriteLine("<hash>{0}={0}", filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
sw2.WriteLine();
|
||||||
|
|
||||||
|
string cdf_file_name = catname + ".cdf";
|
||||||
|
|
||||||
|
Directory.SetCurrentDirectory(dir);
|
||||||
|
|
||||||
|
File.WriteAllText(cdf_file_name, sw2.ToString());
|
||||||
|
ExecCommand(makecat1, string.Format("\"{0}\"", cdf_file_name));
|
||||||
|
|
||||||
|
if (no_sign == false)
|
||||||
|
{
|
||||||
|
CodeSign.SignFile(catname, catname, "Catalog File", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(cdf_file_name);
|
||||||
|
|
||||||
|
File.Delete(makecat1);
|
||||||
|
File.Delete(makecat2);
|
||||||
|
File.Delete(makecat3);
|
||||||
|
File.Delete(makecat4);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void MakeDriverPackage()
|
||||||
|
{
|
||||||
|
int build, version;
|
||||||
|
string buildname;
|
||||||
|
DateTime date;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ReadBuildInfoFromTextFile(out build, out version, out buildname, out date);
|
||||||
|
|
||||||
|
date = date.AddDays(-1);
|
||||||
|
|
||||||
|
string dst_dir = Path.Combine(Paths.BaseDirName, @"tmp\MakeDriverPackage");
|
||||||
|
string src_dir = Path.Combine(Paths.BaseDirName, @"BuiltDriverPackages");
|
||||||
|
IO.DeleteFilesAndSubDirsInDir(dst_dir);
|
||||||
|
IO.MakeDirIfNotExists(dst_dir);
|
||||||
|
|
||||||
|
// Neo9x x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo9x\x86"));
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo9x\x86\Neo9x_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo9x\x86\Neo9x_x86.inf")), build, version, date, null, null, null, false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo9x\x86\Neo9x_x86.sys"), Path.Combine(dst_dir, @"Neo9x\x86\Neo9x_x86.sys"));
|
||||||
|
|
||||||
|
// Neo x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo\x86"));
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo\x86\Neo_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo\x86\Neo_x86.inf")), build, version, date, null, null, null, false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo\x86\Neo_x86.sys"), Path.Combine(dst_dir, @"Neo\x86\Neo_x86.sys"));
|
||||||
|
|
||||||
|
// Neo x64
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo\x64"));
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo\x64\Neo_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo\x64\Neo_x64.inf")), build, version, date, null, null, null, false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo\x64\Neo_x64.sys"), Path.Combine(dst_dir, @"Neo\x64\Neo_x64.sys"));
|
||||||
|
|
||||||
|
// Neo6 x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6\x86"));
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6\x86\Neo6_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86.inf")), build, version, date, null, null, null, false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86.sys"), Path.Combine(dst_dir, @"Neo6\x86\Neo6_x86.sys"));
|
||||||
|
|
||||||
|
// Neo6 x64
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6\x64"));
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6\x64\Neo6_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64.inf")), build, version, date, null, null, null, false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64.sys"), Path.Combine(dst_dir, @"Neo6\x64\Neo6_x64.sys"));
|
||||||
|
|
||||||
|
// Neo6 for Windows 8 x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6_Win8\x86"));
|
||||||
|
List<string> cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("Neo6_x86.sys");
|
||||||
|
for (i = 1; i < 128; i++)
|
||||||
|
{
|
||||||
|
string name = "VPN";
|
||||||
|
if (i >= 2)
|
||||||
|
{
|
||||||
|
name += i.ToString();
|
||||||
|
}
|
||||||
|
string sys_name = "Neo_" + name + ".sys";
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6_Win8\x86\Neo6_x86_" + name + ".inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86.inf")), build, version, date, sys_name, name, string.Format("inf_{0}.cat", name), true), Str.ShiftJisEncoding, false);
|
||||||
|
cat_src_filename.Add("Neo6_x86_" + name + ".inf");
|
||||||
|
}
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86.sys"), Path.Combine(dst_dir, @"Neo6_Win8\x86\Neo6_x86.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win8\x86"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win8\x86"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// Neo6 for Windows 8 x64
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6_Win8\x64"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("Neo6_x64.sys");
|
||||||
|
for (i = 1; i < 128; i++)
|
||||||
|
{
|
||||||
|
string name = "VPN";
|
||||||
|
if (i >= 2)
|
||||||
|
{
|
||||||
|
name += i.ToString();
|
||||||
|
}
|
||||||
|
string sys_name = "Neo_" + name + ".sys";
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6_Win8\x64\Neo6_x64_" + name + ".inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64.inf")), build, version, date, sys_name, name, string.Format("inf_{0}.cat", name), true), Str.ShiftJisEncoding, false);
|
||||||
|
cat_src_filename.Add("Neo6_x64_" + name + ".inf");
|
||||||
|
}
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64.sys"), Path.Combine(dst_dir, @"Neo6_Win8\x64\Neo6_x64.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win8\x64"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win8\x64"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// Neo6 for Windows 10 x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6_Win10\x86"));
|
||||||
|
for (i = 1; i < 128; i++)
|
||||||
|
{
|
||||||
|
string name = "VPN";
|
||||||
|
if (i >= 2)
|
||||||
|
{
|
||||||
|
name += i.ToString();
|
||||||
|
}
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("Neo6_x86_" + name + ".sys");
|
||||||
|
string sys_name = "Neo6_x86_" + name + ".sys";
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6_Win10\x86\Neo6_x86_" + name + ".inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86.inf")), build, version, date, sys_name, name, string.Format("Neo6_x86_{0}.cat", name), true), Str.ShiftJisEncoding, false);
|
||||||
|
cat_src_filename.Add("Neo6_x86_" + name + ".inf");
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x86\Neo6_x86_win10.sys"), Path.Combine(dst_dir, @"Neo6_Win10\x86\Neo6_x86_" + name + ".sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win10\x86"), cat_src_filename.ToArray(), "Neo6_x86_" + name + ".cat", true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Neo6 for Windows 10 x64
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Neo6_Win10\x64"));
|
||||||
|
for (i = 1; i < 128; i++)
|
||||||
|
{
|
||||||
|
string name = "VPN";
|
||||||
|
if (i >= 2)
|
||||||
|
{
|
||||||
|
name += i.ToString();
|
||||||
|
}
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("Neo6_x64_" + name + ".sys");
|
||||||
|
string sys_name = "Neo6_x64_" + name + ".sys";
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Neo6_Win10\x64\Neo6_x64_" + name + ".inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64.inf")), build, version, date, sys_name, name, string.Format("Neo6_x64_{0}.cat", name), true), Str.ShiftJisEncoding, false);
|
||||||
|
cat_src_filename.Add("Neo6_x64_" + name + ".inf");
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Neo6\x64\Neo6_x64_win10.sys"), Path.Combine(dst_dir, @"Neo6_Win10\x64\Neo6_x64_" + name + ".sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Neo6_Win10\x64"), cat_src_filename.ToArray(), "Neo6_x64_" + name + ".cat", true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
IO.CopyDir(Path.Combine(src_dir, "See"), Path.Combine(dst_dir, "See"), null, false, false);
|
||||||
|
|
||||||
|
// SeLow x86 for Windows 8.1
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"SeLow_Win8\x86"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("SeLow_x86.sys");
|
||||||
|
cat_src_filename.Add("SeLow_x86.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"SeLow_Win8\x86\SeLow_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"SeLow\x86\SeLow_x86.inf")), build, version, date, null, null, "SeLow_Win8_x86.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"SeLow\x86\SeLow_x86.sys"), Path.Combine(dst_dir, @"SeLow_Win8\x86\SeLow_x86.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win8\x86"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win8\x86"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// SeLow x64 for Windows 8.1
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"SeLow_Win8\x64"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("SeLow_x64.sys");
|
||||||
|
cat_src_filename.Add("SeLow_x64.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"SeLow_Win8\x64\SeLow_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"SeLow\x64\SeLow_x64.inf")), build, version, date, null, null, "SeLow_Win8_x64.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"SeLow\x64\SeLow_x64.sys"), Path.Combine(dst_dir, @"SeLow_Win8\x64\SeLow_x64.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win8\x64"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win8\x64"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// SeLow x86 for Windows 10
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"SeLow_Win10\x86"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("SeLow_x86.sys");
|
||||||
|
cat_src_filename.Add("SeLow_x86.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"SeLow_Win10\x86\SeLow_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"SeLow\x86\SeLow_x86.inf")), build, version, date, null, null, "SeLow_Win10_x86.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"SeLow\x86\SeLow_x86_win10.sys"), Path.Combine(dst_dir, @"SeLow_Win10\x86\SeLow_x86.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win10\x86"), cat_src_filename.ToArray(), "SeLow_Win10_x86.cat", true, false);
|
||||||
|
|
||||||
|
// SeLow x64 for Windows 10
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"SeLow_Win10\x64"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("SeLow_x64.sys");
|
||||||
|
cat_src_filename.Add("SeLow_x64.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"SeLow_Win10\x64\SeLow_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"SeLow\x64\SeLow_x64.inf")), build, version, date, null, null, "SeLow_Win10_x64.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"SeLow\x64\SeLow_x64_win10.sys"), Path.Combine(dst_dir, @"SeLow_Win10\x64\SeLow_x64.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"SeLow_Win10\x64"), cat_src_filename.ToArray(), "SeLow_Win10_x64.cat", true, false);
|
||||||
|
|
||||||
|
// Wfp x86
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Wfp\x86"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("pxwfp_x86.sys");
|
||||||
|
cat_src_filename.Add("pxwfp_x86.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Wfp\x86\pxwfp_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Wfp\x86\pxwfp_x86.inf")), build, version, date, null, null, "pxwfp_x86.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Wfp\x86\pxwfp_x86.sys"), Path.Combine(dst_dir, @"Wfp\x86\pxwfp_x86.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp\x86"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp\x86"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// Wfp x64
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Wfp\x64"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("pxwfp_x64.sys");
|
||||||
|
cat_src_filename.Add("pxwfp_x64.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Wfp\x64\pxwfp_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Wfp\x64\pxwfp_x64.inf")), build, version, date, null, null, "pxwfp_x64.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Wfp\x64\pxwfp_x64.sys"), Path.Combine(dst_dir, @"Wfp\x64\pxwfp_x64.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp\x64"), cat_src_filename.ToArray(), "inf.cat", false, false);
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp\x64"), cat_src_filename.ToArray(), "inf2.cat", true, false);
|
||||||
|
|
||||||
|
// Wfp x86 for Windows 10
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Wfp_Win10\x86"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("pxwfp_x86.sys");
|
||||||
|
cat_src_filename.Add("pxwfp_x86.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Wfp_Win10\x86\pxwfp_x86.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Wfp\x86\pxwfp_x86.inf")), build, version, date, null, null, "pxwfp_Win10_x86.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Wfp\x86\pxwfp_x86_win10.sys"), Path.Combine(dst_dir, @"Wfp_Win10\x86\pxwfp_x86.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp_Win10\x86"), cat_src_filename.ToArray(), "pxwfp_Win10_x86.cat", true, false);
|
||||||
|
|
||||||
|
// Wfp x64 for Windows 10
|
||||||
|
IO.MakeDir(Path.Combine(dst_dir, @"Wfp_Win10\x64"));
|
||||||
|
cat_src_filename = new List<string>();
|
||||||
|
cat_src_filename.Add("pxwfp_x64.sys");
|
||||||
|
cat_src_filename.Add("pxwfp_x64.inf");
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, @"Wfp_Win10\x64\pxwfp_x64.inf"),
|
||||||
|
process_inf_file(IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, @"Wfp\x64\pxwfp_x64.inf")), build, version, date, null, null, "pxwfp_Win10_x64.cat", false), Str.ShiftJisEncoding, false);
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, @"Wfp\x64\pxwfp_x64_win10.sys"), Path.Combine(dst_dir, @"Wfp_Win10\x64\pxwfp_x64.sys"));
|
||||||
|
make_cat_file(Path.Combine(dst_dir, @"Wfp_Win10\x64"), cat_src_filename.ToArray(), "pxwfp_Win10_x64.cat", true, false);
|
||||||
|
|
||||||
|
string tmp_body = IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, "make_whql_submission.cm_"));
|
||||||
|
tmp_body = Str.ReplaceStr(tmp_body, "test_tag", Str.DateTimeToStrShort(DateTime.Now) + "_Build_" + build.ToString());
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, "make_whql_submission.cmd"), tmp_body, Str.ShiftJisEncoding);
|
||||||
|
|
||||||
|
IO.FileCopy(Path.Combine(src_dir, "2_merge_whql_sign.cm_"), Path.Combine(dst_dir, "2_merge_whql_sign.cm_"));
|
||||||
|
|
||||||
|
tmp_body = IO.ReadAllTextWithAutoGetEncoding(Path.Combine(src_dir, "Memo.txt"));
|
||||||
|
tmp_body = Str.ReplaceStr(tmp_body, "tag_ver", (version / 100).ToString() + "." + (version % 100).ToString());
|
||||||
|
tmp_body = Str.ReplaceStr(tmp_body, "tag_build", build.ToString());
|
||||||
|
IO.WriteAllTextWithEncoding(Path.Combine(dst_dir, "Memo.txt"), tmp_body, Str.ShiftJisEncoding);
|
||||||
|
|
||||||
|
Kernel.Run(Path.Combine(Env.WindowsDir, "explorer.exe"), "\"" + dst_dir + "\"");
|
||||||
|
}
|
||||||
|
|
||||||
// Sign for all binary files (series mode)
|
// Sign for all binary files (series mode)
|
||||||
public static void SignAllBinaryFilesSerial()
|
public static void SignAllBinaryFilesSerial()
|
||||||
{
|
{
|
||||||
@ -1087,7 +1448,3 @@ namespace BuildUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -1448,7 +1448,3 @@ int CompareUserName(void *p1, void *p2)
|
|||||||
return StrCmpi(u1->Name, u2->Name);
|
return StrCmpi(u1->Name, u2->Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -317,7 +317,3 @@ char *NormalizePolicyName(char *name);
|
|||||||
#endif // ACCOUNT_H
|
#endif // ACCOUNT_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Contributors:
|
// Contributors:
|
||||||
// - ELIN (https://github.com/el1n)
|
// - ELIN (https://github.com/el1n)
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
@ -1166,7 +1166,7 @@ UINT StMakeOpenVpnConfigFile(ADMIN *a, RPC_READ_LOG_FILE *t)
|
|||||||
|
|
||||||
name = NewName(cn, cn, cn, L"US", NULL, NULL);
|
name = NewName(cn, cn, cn, L"US", NULL, NULL);
|
||||||
|
|
||||||
dummy_x = NewRootX(dummy_public_k, dummy_private_k, name, MAX(GetDaysUntil2038(), SERVER_DEFAULT_CERT_DAYS), NULL);
|
dummy_x = NewRootX(dummy_public_k, dummy_private_k, name, GetDaysUntil2038Ex(), NULL);
|
||||||
|
|
||||||
FreeName(name);
|
FreeName(name);
|
||||||
|
|
||||||
@ -6739,7 +6739,7 @@ UINT StAddCa(ADMIN *a, RPC_HUB_ADD_CA *t)
|
|||||||
|
|
||||||
if (t->Cert == NULL)
|
if (t->Cert == NULL)
|
||||||
{
|
{
|
||||||
ERR_INVALID_PARAMETER;
|
return ERR_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t->Cert->is_compatible_bit == false)
|
if (t->Cert->is_compatible_bit == false)
|
||||||
@ -11840,12 +11840,12 @@ void InRpcHubEnumCa(RPC_HUB_ENUM_CA *t, PACK *p)
|
|||||||
void OutRpcHubEnumCa(PACK *p, RPC_HUB_ENUM_CA *t)
|
void OutRpcHubEnumCa(PACK *p, RPC_HUB_ENUM_CA *t)
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
PackAddStr(p, "HubName", t->HubName);
|
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (t == NULL || p == NULL)
|
if (t == NULL || p == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
PackAddStr(p, "HubName", t->HubName);
|
||||||
|
|
||||||
for (i = 0;i < t->NumCa;i++)
|
for (i = 0;i < t->NumCa;i++)
|
||||||
{
|
{
|
||||||
@ -12313,12 +12313,12 @@ void InRpcEnumAccessList(RPC_ENUM_ACCESS_LIST *a, PACK *p)
|
|||||||
void OutRpcEnumAccessList(PACK *p, RPC_ENUM_ACCESS_LIST *a)
|
void OutRpcEnumAccessList(PACK *p, RPC_ENUM_ACCESS_LIST *a)
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
PackAddStr(p, "HubName", a->HubName);
|
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (a == NULL || p == NULL)
|
if (a == NULL || p == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
PackAddStr(p, "HubName", a->HubName);
|
||||||
|
|
||||||
for (i = 0;i < a->NumAccess;i++)
|
for (i = 0;i < a->NumAccess;i++)
|
||||||
{
|
{
|
||||||
@ -12573,12 +12573,12 @@ void InRpcEnumUser(RPC_ENUM_USER *t, PACK *p)
|
|||||||
void OutRpcEnumUser(PACK *p, RPC_ENUM_USER *t)
|
void OutRpcEnumUser(PACK *p, RPC_ENUM_USER *t)
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
PackAddStr(p, "HubName", t->HubName);
|
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (t == NULL || p == NULL)
|
if (t == NULL || p == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
PackAddStr(p, "HubName", t->HubName);
|
||||||
|
|
||||||
for (i = 0;i < t->NumUser;i++)
|
for (i = 0;i < t->NumUser;i++)
|
||||||
{
|
{
|
||||||
@ -12787,12 +12787,12 @@ void InRpcEnumSession(RPC_ENUM_SESSION *t, PACK *p)
|
|||||||
void OutRpcEnumSession(PACK *p, RPC_ENUM_SESSION *t)
|
void OutRpcEnumSession(PACK *p, RPC_ENUM_SESSION *t)
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
PackAddStr(p, "HubName", t->HubName);
|
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (t == NULL || p == NULL)
|
if (t == NULL || p == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
PackAddStr(p, "HubName", t->HubName);
|
||||||
|
|
||||||
for (i = 0;i < t->NumSession;i++)
|
for (i = 0;i < t->NumSession;i++)
|
||||||
{
|
{
|
||||||
@ -13907,7 +13907,3 @@ bool SiIsEmptyPassword(void *hash_password)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -1533,7 +1533,3 @@ void OutRpcInternetSetting(PACK *p, INTERNET_SETTING *t);
|
|||||||
#endif // ADMIN_H
|
#endif // ADMIN_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -205,7 +205,8 @@ void AcWaitForRequest(AZURE_CLIENT *ac, SOCK *s, AZURE_PARAM *param)
|
|||||||
BinToStr(server_cert_hash_str, sizeof(server_cert_hash_str),
|
BinToStr(server_cert_hash_str, sizeof(server_cert_hash_str),
|
||||||
server_cert_hash, SHA1_SIZE);
|
server_cert_hash, SHA1_SIZE);
|
||||||
|
|
||||||
if (IsEmptyStr(ac->DDnsStatusCopy.AzureCertHash) || StrCmpi(server_cert_hash_str, ac->DDnsStatusCopy.AzureCertHash) == 0)
|
if (IsEmptyStr(ac->DDnsStatusCopy.AzureCertHash) || StrCmpi(server_cert_hash_str, ac->DDnsStatusCopy.AzureCertHash) == 0
|
||||||
|
|| StrCmpi(server_cert_hash_str, ac->DDnsStatus.AzureCertHash) == 0)
|
||||||
{
|
{
|
||||||
if (SendAll(ns, AZURE_PROTOCOL_DATA_SIANGTURE, 24, true))
|
if (SendAll(ns, AZURE_PROTOCOL_DATA_SIANGTURE, 24, true))
|
||||||
{
|
{
|
||||||
@ -682,7 +683,3 @@ AZURE_CLIENT *NewAzureClient(CEDAR *cedar, SERVER *server)
|
|||||||
return ac;
|
return ac;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -173,7 +173,3 @@ void AcWaitForRequest(AZURE_CLIENT *ac, SOCK *s, AZURE_PARAM *param);
|
|||||||
#endif // AZURE_CLIENT_H
|
#endif // AZURE_CLIENT_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -114,7 +114,3 @@
|
|||||||
#include "CedarPch.h"
|
#include "CedarPch.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -118,7 +118,3 @@
|
|||||||
#endif // AZURE_SERVER_H
|
#endif // AZURE_SERVER_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -556,7 +556,13 @@ BRIDGE *BrNewBridge(HUB *h, char *name, POLICY *p, bool local, bool monitor, boo
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Raw IP bridge is supported only on Linux
|
||||||
|
bool IsRawIpBridgeSupported()
|
||||||
|
{
|
||||||
|
#ifdef UNIX_LINUX
|
||||||
|
return true;
|
||||||
|
#else // UNIX_LINUX
|
||||||
|
return false;
|
||||||
|
#endif // UNIX_LINUX
|
||||||
|
}
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -126,6 +126,9 @@
|
|||||||
|
|
||||||
#endif // OS_WIN32
|
#endif // OS_WIN32
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
#define BRIDGE_SPECIAL_IPRAW_NAME "ipv4_rawsocket_virtual_router"
|
||||||
|
|
||||||
// Bridge
|
// Bridge
|
||||||
struct BRIDGE
|
struct BRIDGE
|
||||||
{
|
{
|
||||||
@ -171,12 +174,9 @@ bool DeleteLocalBridge(CEDAR *c, char *hubname, char *devicename);
|
|||||||
bool IsBridgeSupported();
|
bool IsBridgeSupported();
|
||||||
bool IsNeedWinPcap();
|
bool IsNeedWinPcap();
|
||||||
UINT GetEthDeviceHash();
|
UINT GetEthDeviceHash();
|
||||||
|
bool IsRawIpBridgeSupported();
|
||||||
|
|
||||||
#endif // BRIDGE_H
|
#endif // BRIDGE_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -374,7 +374,7 @@ TOKEN_LIST *GetEthListSolaris()
|
|||||||
|
|
||||||
#ifdef UNIX_LINUX
|
#ifdef UNIX_LINUX
|
||||||
// Get Ethernet device list on Linux
|
// Get Ethernet device list on Linux
|
||||||
TOKEN_LIST *GetEthListLinux()
|
TOKEN_LIST *GetEthListLinux(bool enum_normal, bool enum_rawip)
|
||||||
{
|
{
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
TOKEN_LIST *t;
|
TOKEN_LIST *t;
|
||||||
@ -383,6 +383,11 @@ TOKEN_LIST *GetEthListLinux()
|
|||||||
LIST *o;
|
LIST *o;
|
||||||
char name[MAX_SIZE];
|
char name[MAX_SIZE];
|
||||||
|
|
||||||
|
if (enum_normal == false && enum_rawip)
|
||||||
|
{
|
||||||
|
return ParseToken(BRIDGE_SPECIAL_IPRAW_NAME, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
o = NewListFast(CompareStr);
|
o = NewListFast(CompareStr);
|
||||||
|
|
||||||
s = UnixEthOpenRawSocket();
|
s = UnixEthOpenRawSocket();
|
||||||
@ -431,7 +436,7 @@ TOKEN_LIST *GetEthListLinux()
|
|||||||
Sort(o);
|
Sort(o);
|
||||||
|
|
||||||
t = ZeroMalloc(sizeof(TOKEN_LIST));
|
t = ZeroMalloc(sizeof(TOKEN_LIST));
|
||||||
t->NumTokens = LIST_NUM(o);
|
t->NumTokens = LIST_NUM(o) + (enum_rawip ? 1 : 0);
|
||||||
t->Token = ZeroMalloc(sizeof(char *) * t->NumTokens);
|
t->Token = ZeroMalloc(sizeof(char *) * t->NumTokens);
|
||||||
|
|
||||||
for (i = 0;i < LIST_NUM(o);i++)
|
for (i = 0;i < LIST_NUM(o);i++)
|
||||||
@ -440,6 +445,11 @@ TOKEN_LIST *GetEthListLinux()
|
|||||||
t->Token[i] = name;
|
t->Token[i] = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (enum_rawip)
|
||||||
|
{
|
||||||
|
t->Token[t->NumTokens - 1] = CopyStr(BRIDGE_SPECIAL_IPRAW_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
ReleaseList(o);
|
ReleaseList(o);
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
@ -542,11 +552,15 @@ TOKEN_LIST *GetEthListBpf()
|
|||||||
|
|
||||||
// Enumerate Ethernet devices
|
// Enumerate Ethernet devices
|
||||||
TOKEN_LIST *GetEthList()
|
TOKEN_LIST *GetEthList()
|
||||||
|
{
|
||||||
|
return GetEthListEx(NULL, true, false);
|
||||||
|
}
|
||||||
|
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden, bool enum_normal, bool enum_rawip)
|
||||||
{
|
{
|
||||||
TOKEN_LIST *t = NULL;
|
TOKEN_LIST *t = NULL;
|
||||||
|
|
||||||
#if defined(UNIX_LINUX)
|
#if defined(UNIX_LINUX)
|
||||||
t = GetEthListLinux();
|
t = GetEthListLinux(enum_normal, enum_rawip);
|
||||||
#elif defined(UNIX_SOLARIS)
|
#elif defined(UNIX_SOLARIS)
|
||||||
t = GetEthListSolaris();
|
t = GetEthListSolaris();
|
||||||
#elif defined(BRIDGE_PCAP)
|
#elif defined(BRIDGE_PCAP)
|
||||||
@ -575,6 +589,11 @@ ETH *OpenEthLinux(char *name, bool local, bool tapmode, char *tapaddr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrCmpi(name, BRIDGE_SPECIAL_IPRAW_NAME) == 0)
|
||||||
|
{
|
||||||
|
return OpenEthLinuxIpRaw();
|
||||||
|
}
|
||||||
|
|
||||||
if (tapmode)
|
if (tapmode)
|
||||||
{
|
{
|
||||||
#ifndef NO_VLAN
|
#ifndef NO_VLAN
|
||||||
@ -732,6 +751,10 @@ UINT EthGetMtu(ETH *e)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (e->CurrentMtu != 0)
|
if (e->CurrentMtu != 0)
|
||||||
{
|
{
|
||||||
@ -802,6 +825,10 @@ bool EthSetMtu(ETH *e, UINT mtu)
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (mtu == 0)
|
if (mtu == 0)
|
||||||
{
|
{
|
||||||
@ -865,6 +892,11 @@ bool EthIsChangeMtuSupported(ETH *e)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
#else // defined(UNIX_LINUX) || defined(UNIX_BSD) || defined(UNIX_SOLARIS)
|
#else // defined(UNIX_LINUX) || defined(UNIX_BSD) || defined(UNIX_SOLARIS)
|
||||||
return false;
|
return false;
|
||||||
@ -1526,6 +1558,13 @@ void CloseEth(ETH *e)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
CloseEthLinuxIpRaw(e);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (e->Tap != NULL)
|
if (e->Tap != NULL)
|
||||||
{
|
{
|
||||||
#ifndef NO_VLAN
|
#ifndef NO_VLAN
|
||||||
@ -1647,6 +1686,11 @@ UINT EthGetPacketLinux(ETH *e, void **data)
|
|||||||
return INFINITE;
|
return INFINITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
return EthGetPacketLinuxIpRaw(e, data);
|
||||||
|
}
|
||||||
|
|
||||||
if (e->Tap != NULL)
|
if (e->Tap != NULL)
|
||||||
{
|
{
|
||||||
#ifndef NO_VLAN
|
#ifndef NO_VLAN
|
||||||
@ -1949,6 +1993,11 @@ void EthPutPacket(ETH *e, void *data, UINT size)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (e->IsRawIpMode)
|
||||||
|
{
|
||||||
|
EthPutPacketLinuxIpRaw(e, data, size);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (size < 14 || size > MAX_PACKET_SIZE)
|
if (size < 14 || size > MAX_PACKET_SIZE)
|
||||||
{
|
{
|
||||||
Free(data);
|
Free(data);
|
||||||
@ -2017,10 +2066,745 @@ void EthPutPacket(ETH *e, void *data, UINT size)
|
|||||||
Free(data);
|
Free(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Open ETH by using IP raw packets
|
||||||
|
ETH *OpenEthLinuxIpRaw()
|
||||||
|
{
|
||||||
|
ETH *e;
|
||||||
|
|
||||||
|
if (IsRawIpBridgeSupported() == false)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
e = ZeroMalloc(sizeof(ETH));
|
||||||
|
|
||||||
|
e->IsRawIpMode = true;
|
||||||
|
|
||||||
|
e->RawTcp = NewUDP4(MAKE_SPECIAL_PORT(IPPROTO_TCP), NULL);
|
||||||
|
e->RawUdp = NewUDP4(MAKE_SPECIAL_PORT(IPPROTO_UDP), NULL);
|
||||||
|
e->RawIcmp = NewUDP4(MAKE_SPECIAL_PORT(IPPROTO_ICMP), NULL);
|
||||||
|
|
||||||
|
if (e->RawTcp == NULL || e->RawUdp == NULL || e->RawIcmp == NULL)
|
||||||
|
{
|
||||||
|
ReleaseSock(e->RawTcp);
|
||||||
|
ReleaseSock(e->RawUdp);
|
||||||
|
ReleaseSock(e->RawIcmp);
|
||||||
|
|
||||||
|
Free(e);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClearSockDfBit(e->RawTcp);
|
||||||
|
ClearSockDfBit(e->RawUdp);
|
||||||
|
ClearSockDfBit(e->RawIcmp);
|
||||||
|
|
||||||
|
SetRawSockHeaderIncludeOption(e->RawTcp, true);
|
||||||
|
SetRawSockHeaderIncludeOption(e->RawUdp, true);
|
||||||
|
SetRawSockHeaderIncludeOption(e->RawIcmp, true);
|
||||||
|
|
||||||
|
e->Name = CopyStr(BRIDGE_SPECIAL_IPRAW_NAME);
|
||||||
|
e->Title = CopyStr(BRIDGE_SPECIAL_IPRAW_NAME);
|
||||||
|
e->Cancel = NewCancel();
|
||||||
|
|
||||||
|
UnixDeletePipe(e->Cancel->pipe_read, e->Cancel->pipe_write);
|
||||||
|
e->Cancel->pipe_read = e->Cancel->pipe_write = -1;
|
||||||
|
|
||||||
|
UnixSetSocketNonBlockingMode(e->RawTcp->socket, true);
|
||||||
|
UnixSetSocketNonBlockingMode(e->RawUdp->socket, true);
|
||||||
|
UnixSetSocketNonBlockingMode(e->RawIcmp->socket, true);
|
||||||
|
|
||||||
|
e->Cancel->SpecialFlag = true;
|
||||||
|
e->Cancel->pipe_read = e->RawTcp->socket;
|
||||||
|
e->Cancel->pipe_special_read2 = e->RawUdp->socket;
|
||||||
|
e->Cancel->pipe_special_read3 = e->RawIcmp->socket;
|
||||||
|
|
||||||
|
e->RawIpMyMacAddr[2] = 0x01;
|
||||||
|
e->RawIpMyMacAddr[5] = 0x01;
|
||||||
|
|
||||||
|
SetIP(&e->MyIP, 10, 171, 7, 253);
|
||||||
|
SetIP(&e->YourIP, 10, 171, 7, 254);
|
||||||
|
|
||||||
|
e->RawIpSendQueue = NewQueueFast();
|
||||||
|
|
||||||
|
e->RawIP_TmpBufferSize = 67000;
|
||||||
|
e->RawIP_TmpBuffer = Malloc(e->RawIP_TmpBufferSize);
|
||||||
|
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close ETH by using IP raw packets
|
||||||
|
void CloseEthLinuxIpRaw(ETH *e)
|
||||||
|
{
|
||||||
|
if (e == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
BUF *buf = GetNext(e->RawIpSendQueue);
|
||||||
|
if (buf == NULL)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
FreeBuf(buf);
|
||||||
|
}
|
||||||
|
ReleaseQueue(e->RawIpSendQueue);
|
||||||
|
|
||||||
|
Free(e->Name);
|
||||||
|
Free(e->Title);
|
||||||
|
|
||||||
|
ReleaseSock(e->RawTcp);
|
||||||
|
ReleaseSock(e->RawUdp);
|
||||||
|
ReleaseSock(e->RawIcmp);
|
||||||
|
|
||||||
|
ReleaseCancel(e->Cancel);
|
||||||
|
|
||||||
|
Free(e->RawIP_TmpBuffer);
|
||||||
|
|
||||||
|
Free(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Receive an IP raw packet
|
||||||
|
UINT EthGetPacketLinuxIpRaw(ETH *e, void **data)
|
||||||
|
{
|
||||||
|
UINT r;
|
||||||
|
BUF *b;
|
||||||
|
// Validate arguments
|
||||||
|
if (e == NULL || data == NULL)
|
||||||
|
{
|
||||||
|
return INFINITE;
|
||||||
|
}
|
||||||
|
if (e->RawIp_HasError)
|
||||||
|
{
|
||||||
|
return INFINITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
b = GetNext(e->RawIpSendQueue);
|
||||||
|
if (b != NULL)
|
||||||
|
{
|
||||||
|
UINT size;
|
||||||
|
|
||||||
|
*data = b->Buf;
|
||||||
|
size = b->Size;
|
||||||
|
|
||||||
|
Free(b);
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = EthGetPacketLinuxIpRawForSock(e, data, e->RawTcp, IP_PROTO_TCP);
|
||||||
|
if (r == 0)
|
||||||
|
{
|
||||||
|
r = EthGetPacketLinuxIpRawForSock(e, data, e->RawUdp, IP_PROTO_UDP);
|
||||||
|
if (r == 0)
|
||||||
|
{
|
||||||
|
r = EthGetPacketLinuxIpRawForSock(e, data, e->RawIcmp, IP_PROTO_ICMPV4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r == INFINITE)
|
||||||
|
{
|
||||||
|
e->RawIp_HasError = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Receive an IP raw packet for the specified socket
|
||||||
|
UINT EthGetPacketLinuxIpRawForSock(ETH *e, void **data, SOCK *s, UINT proto)
|
||||||
|
{
|
||||||
|
UCHAR *tmp;
|
||||||
|
UINT r;
|
||||||
|
IP src_addr;
|
||||||
|
UINT src_port;
|
||||||
|
UINT ret = INFINITE;
|
||||||
|
UCHAR *retbuf;
|
||||||
|
PKT *p;
|
||||||
|
bool ok = false;
|
||||||
|
// Validate arguments
|
||||||
|
if (e == NULL || data == NULL)
|
||||||
|
{
|
||||||
|
return INFINITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = e->RawIP_TmpBuffer;
|
||||||
|
|
||||||
|
LABEL_RETRY:
|
||||||
|
*data = NULL;
|
||||||
|
|
||||||
|
r = RecvFrom(s, &src_addr, &src_port, tmp, e->RawIP_TmpBufferSize);
|
||||||
|
if (r == SOCK_LATER)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r == 0)
|
||||||
|
{
|
||||||
|
if (s->IgnoreRecvErr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return INFINITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 14 + r;
|
||||||
|
retbuf = Malloc(ret);
|
||||||
|
*data = retbuf;
|
||||||
|
|
||||||
|
Copy(retbuf, e->RawIpYourMacAddr, 6);
|
||||||
|
Copy(retbuf + 6, e->RawIpMyMacAddr, 6);
|
||||||
|
retbuf[12] = 0x08;
|
||||||
|
retbuf[13] = 0x00;
|
||||||
|
Copy(retbuf + 14, tmp, r);
|
||||||
|
|
||||||
|
// Mangle packet
|
||||||
|
p = ParsePacket(retbuf, ret);
|
||||||
|
if (p != NULL)
|
||||||
|
{
|
||||||
|
if (p->TypeL3 == L3_IPV4)
|
||||||
|
{
|
||||||
|
IPV4_HEADER *ip;
|
||||||
|
IP original_dest_ip;
|
||||||
|
|
||||||
|
ip = p->L3.IPv4Header;
|
||||||
|
|
||||||
|
UINTToIP(&original_dest_ip, ip->DstIP);
|
||||||
|
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIPForce) == false && CmpIpAddr(&e->MyPhysicalIPForce, &original_dest_ip) == 0 ||
|
||||||
|
(IsIPMyHost(&original_dest_ip) && IsLocalHostIP(&original_dest_ip) == false && IsHostIPAddress4(&original_dest_ip)))
|
||||||
|
{
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIPForce) && CmpIpAddr(&e->MyPhysicalIP, &original_dest_ip) != 0)
|
||||||
|
{
|
||||||
|
// Update MyPhysicalIP
|
||||||
|
Copy(&e->MyPhysicalIP, &original_dest_ip, sizeof(IP));
|
||||||
|
// Debug("e->MyPhysicalIP = %r\n", &e->MyPhysicalIP);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIPForce) == false)
|
||||||
|
{
|
||||||
|
Copy(&e->MyPhysicalIP, &e->MyPhysicalIPForce, sizeof(IP));
|
||||||
|
}
|
||||||
|
|
||||||
|
ip->DstIP = IPToUINT(&e->YourIP);
|
||||||
|
ip->Checksum = 0;
|
||||||
|
ip->Checksum = IpChecksum(ip, IPV4_GET_HEADER_LEN(ip) * 5);
|
||||||
|
|
||||||
|
if (p->TypeL4 == L4_TCP)
|
||||||
|
{
|
||||||
|
TCP_HEADER *tcp = p->L4.TCPHeader;
|
||||||
|
/*
|
||||||
|
if (Endian16(tcp->SrcPort) == 80)
|
||||||
|
{
|
||||||
|
IP a, b;
|
||||||
|
UINTToIP(&a, ip->SrcIP);
|
||||||
|
UINTToIP(&b, ip->DstIP);
|
||||||
|
Debug("%r %r %u %u\n", &a, &b, Endian16(tcp->SrcPort), Endian16(tcp->DstPort));
|
||||||
|
}*/
|
||||||
|
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_UDP)
|
||||||
|
{
|
||||||
|
UDP_HEADER *udp = p->L4.UDPHeader;
|
||||||
|
|
||||||
|
udp->Checksum = 0;
|
||||||
|
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_ICMPV4)
|
||||||
|
{
|
||||||
|
ICMP_HEADER *icmp = p->L4.ICMPHeader;
|
||||||
|
|
||||||
|
if (icmp->Type == ICMP_TYPE_DESTINATION_UNREACHABLE || icmp->Type == ICMP_TYPE_TIME_EXCEEDED)
|
||||||
|
{
|
||||||
|
// Rewrite the Src IP of the IPv4 header of the ICMP response packet
|
||||||
|
UINT size = p->PacketSize - ((UCHAR *)icmp - (UCHAR *)p->PacketData);
|
||||||
|
UCHAR *data = (UCHAR *)icmp;
|
||||||
|
IPV4_HEADER *orig_ipv4 = (IPV4_HEADER *)(((UCHAR *)data) + sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO));
|
||||||
|
UINT orig_ipv4_size = size - (sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO));
|
||||||
|
|
||||||
|
UINT orig_ipv4_header_size = GetIpHeaderSize((UCHAR *)orig_ipv4, orig_ipv4_size);
|
||||||
|
|
||||||
|
if (orig_ipv4_header_size >= sizeof(IPV4_HEADER) && orig_ipv4_size >= orig_ipv4_header_size)
|
||||||
|
{
|
||||||
|
if (orig_ipv4->Protocol == IP_PROTO_ICMPV4)
|
||||||
|
{
|
||||||
|
// Search the inner ICMP header
|
||||||
|
UINT inner_icmp_size = orig_ipv4_size - orig_ipv4_header_size;
|
||||||
|
|
||||||
|
if (inner_icmp_size >= (sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO)))
|
||||||
|
{
|
||||||
|
ICMP_HEADER *inner_icmp = (ICMP_HEADER *)(((UCHAR *)data) +
|
||||||
|
sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO) + orig_ipv4_header_size);
|
||||||
|
|
||||||
|
if (inner_icmp->Type == ICMP_TYPE_ECHO_REQUEST)
|
||||||
|
{
|
||||||
|
ICMP_ECHO *inner_echo = (ICMP_ECHO *)(((UCHAR *)inner_icmp) + sizeof(ICMP_HEADER));
|
||||||
|
|
||||||
|
inner_icmp->Checksum = 0;
|
||||||
|
orig_ipv4->SrcIP = IPToUINT(&e->YourIP);
|
||||||
|
orig_ipv4->Checksum = 0;
|
||||||
|
orig_ipv4->Checksum = IpChecksum(orig_ipv4, orig_ipv4_header_size);
|
||||||
|
|
||||||
|
// Rewrite the outer ICMP header
|
||||||
|
if (true)
|
||||||
|
{
|
||||||
|
UCHAR *payload;
|
||||||
|
UINT payload_size;
|
||||||
|
ICMP_ECHO *echo;
|
||||||
|
|
||||||
|
// Echo Response
|
||||||
|
echo = (ICMP_ECHO *)(((UCHAR *)data) + sizeof(ICMP_HEADER));
|
||||||
|
|
||||||
|
if (size >= (sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO)))
|
||||||
|
{
|
||||||
|
payload = ((UCHAR *)data) + sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO);
|
||||||
|
payload_size = size - (sizeof(ICMP_HEADER) + sizeof(ICMP_ECHO));
|
||||||
|
|
||||||
|
// Rewrite the header
|
||||||
|
icmp->Checksum = 0;
|
||||||
|
icmp->Checksum = IpChecksum(icmp, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
icmp->Checksum = 0;
|
||||||
|
icmp->Checksum = IpChecksum(icmp, p->PayloadSize);
|
||||||
|
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_FRAGMENT)
|
||||||
|
{
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FreePacket(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok == false)
|
||||||
|
{
|
||||||
|
Free(*data);
|
||||||
|
*data = NULL;
|
||||||
|
|
||||||
|
goto LABEL_RETRY;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send internal IP packet (insert into the send queue)
|
||||||
|
void EthSendIpPacketInnerIpRaw(ETH *e, void *data, UINT size, USHORT protocol)
|
||||||
|
{
|
||||||
|
BUF *b;
|
||||||
|
if (e == NULL || data == NULL || size == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e->RawIpSendQueue->num_item >= 1024)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
b = NewBuf();
|
||||||
|
WriteBuf(b, e->RawIpYourMacAddr, 6);
|
||||||
|
WriteBuf(b, e->RawIpMyMacAddr, 6);
|
||||||
|
WriteBufShort(b, protocol);
|
||||||
|
WriteBuf(b, data, size);
|
||||||
|
SeekBufToBegin(b);
|
||||||
|
|
||||||
|
InsertQueue(e->RawIpSendQueue, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process the packet internal if necessary
|
||||||
|
bool EthProcessIpPacketInnerIpRaw(ETH *e, PKT *p)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
if (e == NULL || p == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p->TypeL3 == L3_ARPV4)
|
||||||
|
{
|
||||||
|
// ARP processing
|
||||||
|
ARPV4_HEADER *arp = p->L3.ARPv4Header;
|
||||||
|
|
||||||
|
if (Endian16(arp->HardwareType) == ARP_HARDWARE_TYPE_ETHERNET &&
|
||||||
|
Endian16(arp->ProtocolType) == MAC_PROTO_IPV4 &&
|
||||||
|
arp->HardwareSize == 6 && arp->ProtocolType == 4)
|
||||||
|
{
|
||||||
|
if (IPToUINT(&e->MyIP) == arp->TargetIP)
|
||||||
|
{
|
||||||
|
if (Endian16(arp->Operation) == ARP_OPERATION_REQUEST)
|
||||||
|
{
|
||||||
|
ARPV4_HEADER r;
|
||||||
|
|
||||||
|
Zero(&r, sizeof(r));
|
||||||
|
r.HardwareType = Endian16(ARP_HARDWARE_TYPE_ETHERNET);
|
||||||
|
r.ProtocolType = Endian16(MAC_PROTO_IPV4);
|
||||||
|
r.HardwareSize = 6;
|
||||||
|
r.ProtocolSize = 4;
|
||||||
|
r.Operation = Endian16(ARP_OPERATION_RESPONSE);
|
||||||
|
Copy(r.SrcAddress, e->RawIpMyMacAddr, 6);
|
||||||
|
Copy(r.TargetAddress, arp->SrcAddress, 6);
|
||||||
|
r.SrcIP = IPToUINT(&e->MyIP);
|
||||||
|
r.TargetIP = arp->SrcIP;
|
||||||
|
|
||||||
|
EthSendIpPacketInnerIpRaw(e, &r, sizeof(ARPV4_HEADER), MAC_PROTO_ARPV4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p->TypeL3 == L3_IPV4 && p->TypeL4 == L4_UDP && p->TypeL7 == L7_DHCPV4)
|
||||||
|
{
|
||||||
|
// DHCP processing
|
||||||
|
DHCPV4_HEADER *dhcp;
|
||||||
|
UCHAR *data;
|
||||||
|
UINT size;
|
||||||
|
UINT dhcp_header_size;
|
||||||
|
UINT dhcp_data_offset;
|
||||||
|
UINT tran_id;
|
||||||
|
UINT magic_cookie = Endian32(DHCP_MAGIC_COOKIE);
|
||||||
|
bool ok;
|
||||||
|
DHCP_OPTION_LIST *opt;
|
||||||
|
|
||||||
|
dhcp = p->L7.DHCPv4Header;
|
||||||
|
tran_id = Endian32(dhcp->TransactionId);
|
||||||
|
|
||||||
|
// Get the DHCP data and size
|
||||||
|
dhcp_header_size = sizeof(DHCPV4_HEADER);
|
||||||
|
dhcp_data_offset = (UINT)(((UCHAR *)p->L7.DHCPv4Header) - ((UCHAR *)p->MacHeader) + dhcp_header_size);
|
||||||
|
data = ((UCHAR *)dhcp) + dhcp_header_size;
|
||||||
|
size = p->PacketSize - dhcp_data_offset;
|
||||||
|
if (dhcp_header_size < 5)
|
||||||
|
{
|
||||||
|
// Data size is invalid
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search for Magic Cookie
|
||||||
|
ok = false;
|
||||||
|
while (size >= 5)
|
||||||
|
{
|
||||||
|
if (Cmp(data, &magic_cookie, sizeof(magic_cookie)) == 0)
|
||||||
|
{
|
||||||
|
// Found
|
||||||
|
data += 4;
|
||||||
|
size -= 4;
|
||||||
|
ok = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data++;
|
||||||
|
size--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok == false)
|
||||||
|
{
|
||||||
|
// The packet is invalid
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse DHCP options list
|
||||||
|
opt = ParseDhcpOptionList(data, size);
|
||||||
|
if (opt == NULL)
|
||||||
|
{
|
||||||
|
// The packet is invalid
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dhcp->OpCode == 1 && (opt->Opcode == DHCP_DISCOVER || opt->Opcode == DHCP_REQUEST || opt->Opcode == DHCP_INFORM))
|
||||||
|
{
|
||||||
|
// Operate as the server
|
||||||
|
UINT ip = IPToUINT(&e->YourIP);
|
||||||
|
if (ip != 0 || opt->Opcode == DHCP_INFORM)
|
||||||
|
{
|
||||||
|
// Respond if there is providable IP address
|
||||||
|
DHCP_OPTION_LIST ret;
|
||||||
|
LIST *o;
|
||||||
|
UINT hw_type;
|
||||||
|
UINT hw_addr_size;
|
||||||
|
UINT new_ip = ip;
|
||||||
|
IP default_dns;
|
||||||
|
|
||||||
|
Zero(&default_dns, sizeof(default_dns));
|
||||||
|
|
||||||
|
Zero(&ret, sizeof(ret));
|
||||||
|
|
||||||
|
ret.Opcode = (opt->Opcode == DHCP_DISCOVER ? DHCP_OFFER : DHCP_ACK);
|
||||||
|
ret.ServerAddress = IPToUINT(&e->MyIP);
|
||||||
|
ret.LeaseTime = 3600;
|
||||||
|
if (opt->Opcode == DHCP_INFORM)
|
||||||
|
{
|
||||||
|
ret.LeaseTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.SubnetMask = SetIP32(255, 255, 255, 252);
|
||||||
|
|
||||||
|
if (UnixGetDefaultDns(&default_dns) && IsZeroIp(&default_dns) == false)
|
||||||
|
{
|
||||||
|
ret.DnsServer = IPToUINT(&default_dns);
|
||||||
|
ret.DnsServer2 = SetIP32(8, 8, 8, 8);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret.DnsServer = SetIP32(8, 8, 8, 8);
|
||||||
|
ret.DnsServer2 = SetIP32(8, 8, 4, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.Gateway = IPToUINT(&e->MyIP);
|
||||||
|
|
||||||
|
if (opt->Opcode != DHCP_INFORM)
|
||||||
|
{
|
||||||
|
char client_mac[MAX_SIZE];
|
||||||
|
char client_ip[64];
|
||||||
|
IP ips;
|
||||||
|
BinToStr(client_mac, sizeof(client_mac), p->MacAddressSrc, 6);
|
||||||
|
UINTToIP(&ips, ip);
|
||||||
|
IPToStr(client_ip, sizeof(client_ip), &ips);
|
||||||
|
Debug("IP_RAW: DHCP %s : %s given %s\n",
|
||||||
|
ret.Opcode == DHCP_OFFER ? "DHCP_OFFER" : "DHCP_ACK",
|
||||||
|
client_mac, client_ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build a DHCP option
|
||||||
|
o = BuildDhcpOption(&ret);
|
||||||
|
if (o != NULL)
|
||||||
|
{
|
||||||
|
BUF *b = BuildDhcpOptionsBuf(o);
|
||||||
|
if (b != NULL)
|
||||||
|
{
|
||||||
|
UINT dest_ip = p->L3.IPv4Header->SrcIP;
|
||||||
|
UINT blank_size = 128 + 64;
|
||||||
|
UINT dhcp_packet_size;
|
||||||
|
UINT magic = Endian32(DHCP_MAGIC_COOKIE);
|
||||||
|
DHCPV4_HEADER *dhcp;
|
||||||
|
void *magic_cookie_addr;
|
||||||
|
void *buffer_addr;
|
||||||
|
|
||||||
|
if (dest_ip == 0)
|
||||||
|
{
|
||||||
|
dest_ip = 0xffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the DHCP packet size
|
||||||
|
dhcp_packet_size = blank_size + sizeof(DHCPV4_HEADER) + sizeof(magic) + b->Size;
|
||||||
|
|
||||||
|
if (dhcp_packet_size < DHCP_MIN_SIZE)
|
||||||
|
{
|
||||||
|
// Padding
|
||||||
|
dhcp_packet_size = DHCP_MIN_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a header
|
||||||
|
dhcp = ZeroMalloc(dhcp_packet_size);
|
||||||
|
|
||||||
|
dhcp->OpCode = 2;
|
||||||
|
dhcp->HardwareType = hw_type;
|
||||||
|
dhcp->HardwareAddressSize = hw_addr_size;
|
||||||
|
dhcp->Hops = 0;
|
||||||
|
dhcp->TransactionId = Endian32(tran_id);
|
||||||
|
dhcp->Seconds = 0;
|
||||||
|
dhcp->Flags = 0;
|
||||||
|
dhcp->YourIP = new_ip;
|
||||||
|
dhcp->ServerIP = IPToUINT(&e->MyIP);
|
||||||
|
Copy(dhcp->ClientMacAddress, p->MacAddressSrc, 6);
|
||||||
|
|
||||||
|
// Calculate the address
|
||||||
|
magic_cookie_addr = (((UCHAR *)dhcp) + sizeof(DHCPV4_HEADER) + blank_size);
|
||||||
|
buffer_addr = ((UCHAR *)magic_cookie_addr) + sizeof(magic);
|
||||||
|
|
||||||
|
// Magic Cookie
|
||||||
|
Copy(magic_cookie_addr, &magic, sizeof(magic));
|
||||||
|
|
||||||
|
// Buffer
|
||||||
|
Copy(buffer_addr, b->Buf, b->Size);
|
||||||
|
|
||||||
|
if (true)
|
||||||
|
{
|
||||||
|
UCHAR *data = ZeroMalloc(sizeof(IPV4_HEADER) + sizeof(UDP_HEADER) + dhcp_packet_size);
|
||||||
|
IPV4_HEADER *ipv4 = (IPV4_HEADER *)(data);
|
||||||
|
UDP_HEADER *udp = (UDP_HEADER *)(data + sizeof(IPV4_HEADER));
|
||||||
|
|
||||||
|
Copy(data + sizeof(IPV4_HEADER) + sizeof(UDP_HEADER), dhcp, dhcp_packet_size);
|
||||||
|
|
||||||
|
IPV4_SET_VERSION(ipv4, 4);
|
||||||
|
IPV4_SET_HEADER_LEN(ipv4, 5);
|
||||||
|
ipv4->TotalLength = Endian16(sizeof(IPV4_HEADER) + sizeof(UDP_HEADER) + dhcp_packet_size);
|
||||||
|
ipv4->TimeToLive = 63;
|
||||||
|
ipv4->Protocol = IP_PROTO_UDP;
|
||||||
|
ipv4->SrcIP = IPToUINT(&e->MyIP);
|
||||||
|
ipv4->DstIP = dest_ip;
|
||||||
|
ipv4->Checksum = IpChecksum(ipv4, sizeof(IPV4_HEADER));
|
||||||
|
|
||||||
|
udp->SrcPort = Endian16(NAT_DHCP_SERVER_PORT);
|
||||||
|
udp->DstPort = Endian16(NAT_DHCP_CLIENT_PORT);
|
||||||
|
udp->PacketLength = Endian16(sizeof(UDP_HEADER) + dhcp_packet_size);
|
||||||
|
udp->Checksum = CalcChecksumForIPv4(ipv4->SrcIP, ipv4->DstIP, IP_PROTO_UDP,
|
||||||
|
dhcp, dhcp_packet_size, 0);
|
||||||
|
if (udp->Checksum == 0)
|
||||||
|
{
|
||||||
|
udp->Checksum = 0xffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
EthSendIpPacketInnerIpRaw(e, data, sizeof(IPV4_HEADER) + sizeof(UDP_HEADER) + dhcp_packet_size, MAC_PROTO_IPV4);
|
||||||
|
|
||||||
|
Free(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release the memory
|
||||||
|
Free(dhcp);
|
||||||
|
FreeBuf(b);
|
||||||
|
}
|
||||||
|
FreeDhcpOptions(o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Free(opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send an IP raw packet
|
||||||
|
void EthPutPacketLinuxIpRaw(ETH *e, void *data, UINT size)
|
||||||
|
{
|
||||||
|
PKT *p;
|
||||||
|
// Validate arguments
|
||||||
|
if (e == NULL || data == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (size < 14 || size > MAX_PACKET_SIZE || e->RawIp_HasError)
|
||||||
|
{
|
||||||
|
Free(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = ParsePacket(data, size);
|
||||||
|
|
||||||
|
if (p->BroadcastPacket || Cmp(p->MacAddressDest, e->RawIpMyMacAddr, 6) == 0)
|
||||||
|
{
|
||||||
|
if (IsValidUnicastMacAddress(p->MacAddressSrc))
|
||||||
|
{
|
||||||
|
Copy(e->RawIpYourMacAddr, p->MacAddressSrc, 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsZero(e->RawIpYourMacAddr, 6) || IsValidUnicastMacAddress(p->MacAddressSrc) == false ||
|
||||||
|
(p->BroadcastPacket == false && Cmp(p->MacAddressDest, e->RawIpMyMacAddr, 6) != 0))
|
||||||
|
{
|
||||||
|
Free(data);
|
||||||
|
FreePacket(p);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p != NULL)
|
||||||
|
{
|
||||||
|
SOCK *s = NULL;
|
||||||
|
|
||||||
|
if (p->TypeL3 == L3_IPV4)
|
||||||
|
{
|
||||||
|
if (p->TypeL4 == L4_TCP)
|
||||||
|
{
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIP) == false)
|
||||||
|
{
|
||||||
|
s = e->RawTcp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_UDP)
|
||||||
|
{
|
||||||
|
if (EthProcessIpPacketInnerIpRaw(e, p) == false)
|
||||||
|
{
|
||||||
|
s = e->RawUdp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_ICMPV4)
|
||||||
|
{
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIP) == false)
|
||||||
|
{
|
||||||
|
s = e->RawIcmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_FRAGMENT)
|
||||||
|
{
|
||||||
|
if (IsZeroIP(&e->MyPhysicalIP) == false)
|
||||||
|
{
|
||||||
|
s = e->RawIcmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p->TypeL3 == L3_ARPV4)
|
||||||
|
{
|
||||||
|
EthProcessIpPacketInnerIpRaw(e, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s != NULL && p->L3.IPv4Header->DstIP != 0xffffffff && p->BroadcastPacket == false &&
|
||||||
|
p->L3.IPv4Header->SrcIP == IPToUINT(&e->YourIP))
|
||||||
|
{
|
||||||
|
UCHAR *send_data = p->IPv4PayloadData;
|
||||||
|
UCHAR *head = p->PacketData;
|
||||||
|
UINT remove_header_size = (UINT)(send_data - head);
|
||||||
|
|
||||||
|
if (p->PacketSize > remove_header_size)
|
||||||
|
{
|
||||||
|
IP dest;
|
||||||
|
UINT send_data_size = p->PacketSize - remove_header_size;
|
||||||
|
|
||||||
|
// checksum
|
||||||
|
if (p->TypeL4 == L4_UDP)
|
||||||
|
{
|
||||||
|
p->L4.UDPHeader->Checksum = 0;
|
||||||
|
}
|
||||||
|
else if (p->TypeL4 == L4_TCP)
|
||||||
|
{
|
||||||
|
p->L4.TCPHeader->Checksum = 0;
|
||||||
|
p->L4.TCPHeader->Checksum = CalcChecksumForIPv4(IPToUINT(&e->MyPhysicalIP),
|
||||||
|
p->L3.IPv4Header->DstIP, IP_PROTO_TCP,
|
||||||
|
p->L4.TCPHeader, p->IPv4PayloadSize, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
UINTToIP(&dest, p->L3.IPv4Header->DstIP);
|
||||||
|
|
||||||
|
if (s->RawIP_HeaderIncludeFlag == false)
|
||||||
|
{
|
||||||
|
SendTo(s, &dest, 0, send_data, send_data_size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IPV4_HEADER *ip = p->L3.IPv4Header;
|
||||||
|
|
||||||
|
ip->SrcIP = IPToUINT(&e->MyPhysicalIP);
|
||||||
|
ip->Checksum = 0;
|
||||||
|
ip->Checksum = IpChecksum(ip, IPV4_GET_HEADER_LEN(ip) * 4);
|
||||||
|
|
||||||
|
SendTo(s, &dest, 0, ip, ((UCHAR *)p->PacketData - (UCHAR *)ip) + p->PacketSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FreePacket(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
Free(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // BRIDGE_C
|
#endif // BRIDGE_C
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -162,6 +162,19 @@ struct ETH
|
|||||||
|
|
||||||
VLAN *Tap; // tap
|
VLAN *Tap; // tap
|
||||||
bool Linux_IsAuxDataSupported; // Is PACKET_AUXDATA supported
|
bool Linux_IsAuxDataSupported; // Is PACKET_AUXDATA supported
|
||||||
|
|
||||||
|
bool IsRawIpMode; // RAW IP mode
|
||||||
|
SOCK *RawTcp, *RawUdp, *RawIcmp; // RAW sockets
|
||||||
|
bool RawIp_HasError;
|
||||||
|
UCHAR RawIpMyMacAddr[6];
|
||||||
|
UCHAR RawIpYourMacAddr[6];
|
||||||
|
IP MyIP;
|
||||||
|
IP YourIP;
|
||||||
|
QUEUE *RawIpSendQueue;
|
||||||
|
IP MyPhysicalIP;
|
||||||
|
IP MyPhysicalIPForce;
|
||||||
|
UCHAR *RawIP_TmpBuffer;
|
||||||
|
UINT RawIP_TmpBufferSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined( BRIDGE_BPF ) || defined( BRIDGE_PCAP )
|
#if defined( BRIDGE_BPF ) || defined( BRIDGE_PCAP )
|
||||||
@ -180,7 +193,8 @@ bool IsEthSupportedLinux();
|
|||||||
bool IsEthSupportedSolaris();
|
bool IsEthSupportedSolaris();
|
||||||
bool IsEthSupportedPcap();
|
bool IsEthSupportedPcap();
|
||||||
TOKEN_LIST *GetEthList();
|
TOKEN_LIST *GetEthList();
|
||||||
TOKEN_LIST *GetEthListLinux();
|
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden, bool enum_normal, bool enum_rawip);
|
||||||
|
TOKEN_LIST *GetEthListLinux(bool enum_normal, bool enum_rawip);
|
||||||
TOKEN_LIST *GetEthListSolaris();
|
TOKEN_LIST *GetEthListSolaris();
|
||||||
TOKEN_LIST *GetEthListPcap();
|
TOKEN_LIST *GetEthListPcap();
|
||||||
ETH *OpenEth(char *name, bool local, bool tapmode, char *tapaddr);
|
ETH *OpenEth(char *name, bool local, bool tapmode, char *tapaddr);
|
||||||
@ -203,6 +217,14 @@ bool EthIsChangeMtuSupported(ETH *e);
|
|||||||
bool EthGetInterfaceDescriptionUnix(char *name, char *str, UINT size);
|
bool EthGetInterfaceDescriptionUnix(char *name, char *str, UINT size);
|
||||||
bool EthIsInterfaceDescriptionSupportedUnix();
|
bool EthIsInterfaceDescriptionSupportedUnix();
|
||||||
|
|
||||||
|
ETH *OpenEthLinuxIpRaw();
|
||||||
|
void CloseEthLinuxIpRaw(ETH *e);
|
||||||
|
UINT EthGetPacketLinuxIpRaw(ETH *e, void **data);
|
||||||
|
UINT EthGetPacketLinuxIpRawForSock(ETH *e, void **data, SOCK *s, UINT proto);
|
||||||
|
void EthPutPacketLinuxIpRaw(ETH *e, void *data, UINT size);
|
||||||
|
bool EthProcessIpPacketInnerIpRaw(ETH *e, PKT *p);
|
||||||
|
void EthSendIpPacketInnerIpRaw(ETH *e, void *data, UINT size, USHORT protocol);
|
||||||
|
|
||||||
#ifdef UNIX_SOLARIS
|
#ifdef UNIX_SOLARIS
|
||||||
// Function prototype for Solaris
|
// Function prototype for Solaris
|
||||||
bool DlipAttatchRequest(int fd, UINT devid);
|
bool DlipAttatchRequest(int fd, UINT devid);
|
||||||
@ -216,7 +238,3 @@ int UnixEthOpenRawSocket();
|
|||||||
#endif // BRIDGEUNIX_H
|
#endif // BRIDGEUNIX_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -1356,9 +1356,9 @@ TOKEN_LIST *GetEthList()
|
|||||||
{
|
{
|
||||||
UINT v;
|
UINT v;
|
||||||
|
|
||||||
return GetEthListEx(&v);
|
return GetEthListEx(&v, true, false);
|
||||||
}
|
}
|
||||||
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden)
|
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden, bool enum_normal, bool enum_rawip)
|
||||||
{
|
{
|
||||||
TOKEN_LIST *ret;
|
TOKEN_LIST *ret;
|
||||||
UINT i;
|
UINT i;
|
||||||
@ -1371,6 +1371,11 @@ TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (enum_normal == false)
|
||||||
|
{
|
||||||
|
return NullToken();
|
||||||
|
}
|
||||||
|
|
||||||
if (total_num_including_hidden == NULL)
|
if (total_num_including_hidden == NULL)
|
||||||
{
|
{
|
||||||
total_num_including_hidden = &dummy_int;
|
total_num_including_hidden = &dummy_int;
|
||||||
@ -1894,6 +1899,12 @@ bool IsPcdSupported()
|
|||||||
UINT type;
|
UINT type;
|
||||||
OS_INFO *info = GetOsInfo();
|
OS_INFO *info = GetOsInfo();
|
||||||
|
|
||||||
|
if (MsIsWindows10())
|
||||||
|
{
|
||||||
|
// Windows 10 or later never supports PCD driver.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
type = info->OsType;
|
type = info->OsType;
|
||||||
|
|
||||||
if (OS_IS_WINDOWS_NT(type) == false)
|
if (OS_IS_WINDOWS_NT(type) == false)
|
||||||
@ -1972,11 +1983,6 @@ HINSTANCE InstallPcdDriverInternal()
|
|||||||
src_filename = BRIDGE_WIN32_PCD_SYS_X64;
|
src_filename = BRIDGE_WIN32_PCD_SYS_X64;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MsIsIA64())
|
|
||||||
{
|
|
||||||
src_filename = BRIDGE_WIN32_PCD_SYS_IA64;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy see.sys
|
// Copy see.sys
|
||||||
if (FileCopy(src_filename, tmp) == false)
|
if (FileCopy(src_filename, tmp) == false)
|
||||||
{
|
{
|
||||||
@ -1995,10 +2001,6 @@ HINSTANCE InstallPcdDriverInternal()
|
|||||||
{
|
{
|
||||||
dll_filename = BRIDGE_WIN32_PCD_DLL_X64;
|
dll_filename = BRIDGE_WIN32_PCD_DLL_X64;
|
||||||
}
|
}
|
||||||
else if (MsIsIA64())
|
|
||||||
{
|
|
||||||
dll_filename = BRIDGE_WIN32_PCD_DLL_IA64;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to load see.dll and initialize
|
// Try to load see.dll and initialize
|
||||||
@ -2142,7 +2144,7 @@ RELEASE:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
o = GetEthListEx(&total_num);
|
o = GetEthListEx(&total_num, true, false);
|
||||||
if (o == NULL || total_num == 0)
|
if (o == NULL || total_num == 0)
|
||||||
{
|
{
|
||||||
FreeToken(o);
|
FreeToken(o);
|
||||||
@ -2241,7 +2243,3 @@ void GetEthNetworkConnectionName(wchar_t *dst, UINT size, char *device_name)
|
|||||||
#endif // BRIDGE_C
|
#endif // BRIDGE_C
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -116,11 +116,9 @@
|
|||||||
|
|
||||||
#define BRIDGE_WIN32_PACKET_DLL "Packet.dll"
|
#define BRIDGE_WIN32_PACKET_DLL "Packet.dll"
|
||||||
#define BRIDGE_WIN32_PCD_DLL "|see.dll"
|
#define BRIDGE_WIN32_PCD_DLL "|see.dll"
|
||||||
#define BRIDGE_WIN32_PCD_SYS "|see.sys"
|
#define BRIDGE_WIN32_PCD_SYS "|DriverPackages\\See\\x86\\See_x86.sys"
|
||||||
#define BRIDGE_WIN32_PCD_DLL_X64 "|see_x64.dll"
|
#define BRIDGE_WIN32_PCD_DLL_X64 "|see_x64.dll"
|
||||||
#define BRIDGE_WIN32_PCD_SYS_X64 "|see_x64.sys"
|
#define BRIDGE_WIN32_PCD_SYS_X64 "|DriverPackages\\See\\x64\\See_x64.sys"
|
||||||
#define BRIDGE_WIN32_PCD_DLL_IA64 "|see_ia64.dll"
|
|
||||||
#define BRIDGE_WIN32_PCD_SYS_IA64 "|see_ia64.sys"
|
|
||||||
#define BRIDGE_WIN32_PCD_REGKEY "SYSTEM\\CurrentControlSet\\services\\SEE"
|
#define BRIDGE_WIN32_PCD_REGKEY "SYSTEM\\CurrentControlSet\\services\\SEE"
|
||||||
#define BRIDGE_WIN32_PCD_BUILDVALUE "CurrentInstalledBuild"
|
#define BRIDGE_WIN32_PCD_BUILDVALUE "CurrentInstalledBuild"
|
||||||
|
|
||||||
@ -215,6 +213,12 @@ struct ETH
|
|||||||
|
|
||||||
SU *Su; // SeLow handle
|
SU *Su; // SeLow handle
|
||||||
SU_ADAPTER *SuAdapter; // SeLow adapter handle
|
SU_ADAPTER *SuAdapter; // SeLow adapter handle
|
||||||
|
|
||||||
|
// Unused
|
||||||
|
bool IsRawIpMode; // RAW IP mode
|
||||||
|
UCHAR RawIpMyMacAddr[6];
|
||||||
|
UCHAR RawIpYourMacAddr[6];
|
||||||
|
IP MyPhysicalIPForce;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Function prototype
|
// Function prototype
|
||||||
@ -223,7 +227,7 @@ void FreeEth();
|
|||||||
bool IsEthSupported();
|
bool IsEthSupported();
|
||||||
bool IsEthSupportedInner();
|
bool IsEthSupportedInner();
|
||||||
TOKEN_LIST *GetEthList();
|
TOKEN_LIST *GetEthList();
|
||||||
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden);
|
TOKEN_LIST *GetEthListEx(UINT *total_num_including_hidden, bool enum_normal, bool enum_rawip);
|
||||||
ETH *OpenEth(char *name, bool local, bool tapmode, char *tapaddr);
|
ETH *OpenEth(char *name, bool local, bool tapmode, char *tapaddr);
|
||||||
ETH *OpenEthInternal(char *name, bool local, bool tapmode, char *tapaddr);
|
ETH *OpenEthInternal(char *name, bool local, bool tapmode, char *tapaddr);
|
||||||
void CloseEth(ETH *e);
|
void CloseEth(ETH *e);
|
||||||
@ -262,7 +266,3 @@ bool Win32GetEnableSeLow();
|
|||||||
#endif // BRIDGEWIN32_H
|
#endif // BRIDGEWIN32_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Contributors:
|
// Contributors:
|
||||||
// - ELIN (https://github.com/el1n)
|
// - ELIN (https://github.com/el1n)
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
@ -12526,7 +12526,3 @@ void *CmUpdateJumpList(UINT start_id)
|
|||||||
#endif // WIN32
|
#endif // WIN32
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -156,7 +156,3 @@ UINT CmGetSecureBitmapId(char *dest_hostname);
|
|||||||
#endif // CM_H
|
#endif // CM_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Contributors:
|
// Contributors:
|
||||||
// - ELIN (https://github.com/el1n)
|
// - ELIN (https://github.com/el1n)
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
@ -639,7 +639,3 @@ bool CmGetProxyServerNameAndPortFromIeProxyRegStr(char *name, UINT name_size, UI
|
|||||||
void *CmUpdateJumpList(UINT start_id);
|
void *CmUpdateJumpList(UINT start_id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -118,6 +118,34 @@ static UINT init_cedar_counter = 0;
|
|||||||
static REF *cedar_log_ref = NULL;
|
static REF *cedar_log_ref = NULL;
|
||||||
static LOG *cedar_log;
|
static LOG *cedar_log;
|
||||||
|
|
||||||
|
// Check whether there is any EAP-enabled RADIUS configuration
|
||||||
|
bool CedarIsThereAnyEapEnabledRadiusConfig(CEDAR *c)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
UINT i;
|
||||||
|
if (c == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LockHubList(c);
|
||||||
|
{
|
||||||
|
for (i = 0;i < LIST_NUM(c->HubList);i++)
|
||||||
|
{
|
||||||
|
HUB *hub = LIST_DATA(c->HubList, i);
|
||||||
|
|
||||||
|
if (hub->RadiusConvertAllMsChapv2AuthRequestToEap)
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UnlockHubList(c);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Get build date of current code
|
// Get build date of current code
|
||||||
UINT64 GetCurrentBuildDate()
|
UINT64 GetCurrentBuildDate()
|
||||||
{
|
{
|
||||||
@ -235,18 +263,27 @@ bool IsSupportedWinVer(RPC_WINVER *v)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
if ((v->VerMajor == 6 && v->VerMinor == 4) || (v->VerMajor == 10 && v->VerMinor == 0))
|
||||||
// Enable in future when supported
|
|
||||||
if ((v->VerMajor == 6 && v->VerMinor == 4) ||(v->VerMajor == 10 && v->VerMinor == 0))
|
|
||||||
{
|
{
|
||||||
// Windows 10, Server 10
|
if (v->IsServer == false)
|
||||||
|
{
|
||||||
|
// Windows 10 (not Windows Server 2016)
|
||||||
if (v->ServicePack <= 0)
|
if (v->ServicePack <= 0)
|
||||||
{
|
{
|
||||||
// SP0 only
|
// SP0 only
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
else
|
||||||
|
{
|
||||||
|
// Windows Server 2016
|
||||||
|
if (v->ServicePack <= 0)
|
||||||
|
{
|
||||||
|
// SP0 only
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1722,7 +1759,7 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
|||||||
|
|
||||||
c->TrafficDiffList = NewList(NULL);
|
c->TrafficDiffList = NewList(NULL);
|
||||||
|
|
||||||
SetCedarCipherList(c, "RC4-MD5");
|
SetCedarCipherList(c, SERVER_DEFAULT_CIPHER_NAME);
|
||||||
|
|
||||||
c->ClientId = _II("CLIENT_ID");
|
c->ClientId = _II("CLIENT_ID");
|
||||||
|
|
||||||
@ -1877,7 +1914,3 @@ void FreeCedar()
|
|||||||
FreeProtocol();
|
FreeProtocol();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -135,10 +135,10 @@
|
|||||||
|
|
||||||
|
|
||||||
// Version number
|
// Version number
|
||||||
#define CEDAR_VER 415
|
#define CEDAR_VER 423
|
||||||
|
|
||||||
// Build Number
|
// Build Number
|
||||||
#define CEDAR_BUILD 9546
|
#define CEDAR_BUILD 9647
|
||||||
|
|
||||||
// Beta number
|
// Beta number
|
||||||
//#define BETA_NUMBER 3
|
//#define BETA_NUMBER 3
|
||||||
@ -153,16 +153,16 @@
|
|||||||
|
|
||||||
// Specify the location to build
|
// Specify the location to build
|
||||||
#ifndef BUILD_PLACE
|
#ifndef BUILD_PLACE
|
||||||
#define BUILD_PLACE "pc30"
|
#define BUILD_PLACE "pc37"
|
||||||
#endif // BUILD_PLACE
|
#endif // BUILD_PLACE
|
||||||
|
|
||||||
// Specifies the build date
|
// Specifies the build date
|
||||||
#define BUILD_DATE_Y 2015
|
#define BUILD_DATE_Y 2017
|
||||||
#define BUILD_DATE_M 4
|
#define BUILD_DATE_M 10
|
||||||
#define BUILD_DATE_D 5
|
#define BUILD_DATE_D 19
|
||||||
#define BUILD_DATE_HO 2
|
#define BUILD_DATE_HO 14
|
||||||
#define BUILD_DATE_MI 54
|
#define BUILD_DATE_MI 28
|
||||||
#define BUILD_DATE_SE 8
|
#define BUILD_DATE_SE 18
|
||||||
|
|
||||||
// Tolerable time difference
|
// Tolerable time difference
|
||||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||||
@ -242,7 +242,7 @@
|
|||||||
#define FIFO_BUDGET VPN_GP(GP_FIFO_BUDGET, 1000000)
|
#define FIFO_BUDGET VPN_GP(GP_FIFO_BUDGET, 1000000)
|
||||||
#endif // USE_STRATEGY_LOW_MEMORY
|
#endif // USE_STRATEGY_LOW_MEMORY
|
||||||
|
|
||||||
#define MAX_PACKET_SIZE 1560 // Maximum packet size
|
#define MAX_PACKET_SIZE 1600 // Maximum packet size
|
||||||
#define UDP_BUF_SIZE (32 * 1024) // Aim of the UDP packet size
|
#define UDP_BUF_SIZE (32 * 1024) // Aim of the UDP packet size
|
||||||
|
|
||||||
#ifndef USE_STRATEGY_LOW_MEMORY
|
#ifndef USE_STRATEGY_LOW_MEMORY
|
||||||
@ -670,7 +670,7 @@
|
|||||||
|
|
||||||
#define ARP_ENTRY_EXPIRES (30 * 1000) // ARP table expiration date
|
#define ARP_ENTRY_EXPIRES (30 * 1000) // ARP table expiration date
|
||||||
#define ARP_ENTRY_POLLING_TIME (1 * 1000) // ARP table cleaning timer
|
#define ARP_ENTRY_POLLING_TIME (1 * 1000) // ARP table cleaning timer
|
||||||
#define ARP_REQUEST_TIMEOUT (200) // ARP request time-out period
|
#define ARP_REQUEST_TIMEOUT (1000) // ARP request time-out period
|
||||||
#define ARP_REQUEST_GIVEUP (5 * 1000) // Time to give up sending the ARP request
|
#define ARP_REQUEST_GIVEUP (5 * 1000) // Time to give up sending the ARP request
|
||||||
#define IP_WAIT_FOR_ARP_TIMEOUT (5 * 1000) // Total time that an IP packet waiting for ARP table
|
#define IP_WAIT_FOR_ARP_TIMEOUT (5 * 1000) // Total time that an IP packet waiting for ARP table
|
||||||
#define IP_COMBINE_TIMEOUT (10 * 1000) // Time-out of IP packet combining
|
#define IP_COMBINE_TIMEOUT (10 * 1000) // Time-out of IP packet combining
|
||||||
@ -1052,7 +1052,7 @@ typedef struct CEDAR
|
|||||||
UINT QueueBudget; // Queue budget
|
UINT QueueBudget; // Queue budget
|
||||||
LOCK *FifoBudgetLock; // Fifo budget lock
|
LOCK *FifoBudgetLock; // Fifo budget lock
|
||||||
UINT FifoBudget; // Fifo budget
|
UINT FifoBudget; // Fifo budget
|
||||||
bool AcceptOnlyTls; // Accept only TLS (Disable SSL)
|
SSL_ACCEPT_SETTINGS SslAcceptSettings; // SSL Accept Settings
|
||||||
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN Default Client Option String
|
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN Default Client Option String
|
||||||
} CEDAR;
|
} CEDAR;
|
||||||
|
|
||||||
@ -1259,12 +1259,9 @@ UINT CedarGetQueueBudgetConsuming(CEDAR *c);
|
|||||||
UINT CedarGetFifoBudgetConsuming(CEDAR *c);
|
UINT CedarGetFifoBudgetConsuming(CEDAR *c);
|
||||||
UINT CedarGetQueueBudgetBalance(CEDAR *c);
|
UINT CedarGetQueueBudgetBalance(CEDAR *c);
|
||||||
UINT CedarGetFifoBudgetBalance(CEDAR *c);
|
UINT CedarGetFifoBudgetBalance(CEDAR *c);
|
||||||
|
bool CedarIsThereAnyEapEnabledRadiusConfig(CEDAR *c);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // CEDAR_H
|
#endif // CEDAR_H
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);WinPcap"
|
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);WinPcap"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T"
|
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
ExceptionHandling="0"
|
ExceptionHandling="0"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
@ -188,7 +188,7 @@
|
|||||||
EnableIntrinsicFunctions="false"
|
EnableIntrinsicFunctions="false"
|
||||||
FavorSizeOrSpeed="0"
|
FavorSizeOrSpeed="0"
|
||||||
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);WinPcap"
|
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);WinPcap"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;VPN_SPEED"
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;VPN_SPEED"
|
||||||
StringPooling="false"
|
StringPooling="false"
|
||||||
ExceptionHandling="0"
|
ExceptionHandling="0"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -113,7 +113,3 @@
|
|||||||
|
|
||||||
#include "CedarPch.h"
|
#include "CedarPch.h"
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -124,7 +124,3 @@
|
|||||||
#include <Mayaqua/Mayaqua.h>
|
#include <Mayaqua/Mayaqua.h>
|
||||||
#include <Cedar/Cedar.h>
|
#include <Cedar/Cedar.h>
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -142,6 +142,16 @@ typedef struct AUTHNT AUTHNT;
|
|||||||
// ==============================================================
|
// ==============================================================
|
||||||
|
|
||||||
typedef struct RADIUS_LOGIN_OPTION RADIUS_LOGIN_OPTION;
|
typedef struct RADIUS_LOGIN_OPTION RADIUS_LOGIN_OPTION;
|
||||||
|
typedef struct RADIUS_PACKET RADIUS_PACKET;
|
||||||
|
typedef struct RADIUS_AVP RADIUS_AVP;
|
||||||
|
typedef struct EAP_CLIENT EAP_CLIENT;
|
||||||
|
typedef struct EAP_MESSAGE EAP_MESSAGE;
|
||||||
|
typedef struct EAP_MSCHAPV2_GENERAL EAP_MSCHAPV2_GENERAL;
|
||||||
|
typedef struct EAP_MSCHAPV2_CHALLENGE EAP_MSCHAPV2_CHALLENGE;
|
||||||
|
typedef struct EAP_MSCHAPV2_RESPONSE EAP_MSCHAPV2_RESPONSE;
|
||||||
|
typedef struct EAP_MSCHAPV2_SUCCESS_SERVER EAP_MSCHAPV2_SUCCESS_SERVER;
|
||||||
|
typedef struct EAP_MSCHAPV2_SUCCESS_CLIENT EAP_MSCHAPV2_SUCCESS_CLIENT;
|
||||||
|
typedef struct EAP_PEAP EAP_PEAP;
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
@ -528,6 +538,8 @@ typedef struct CTC CTC;
|
|||||||
typedef struct CTR CTR;
|
typedef struct CTR CTR;
|
||||||
typedef struct TTC TTC;
|
typedef struct TTC TTC;
|
||||||
typedef struct TTS TTS;
|
typedef struct TTS TTS;
|
||||||
|
typedef struct TTS_WORKER TTS_WORKER;
|
||||||
|
typedef struct TTC_WORKER TTC_WORKER;
|
||||||
typedef struct TT_RESULT TT_RESULT;
|
typedef struct TT_RESULT TT_RESULT;
|
||||||
typedef struct TTS_SOCK TTS_SOCK;
|
typedef struct TTS_SOCK TTS_SOCK;
|
||||||
typedef struct TTC_SOCK TTC_SOCK;
|
typedef struct TTC_SOCK TTC_SOCK;
|
||||||
@ -738,6 +750,8 @@ typedef struct MIRROR_SERVER MIRROR_SERVER;
|
|||||||
// ==============================================================
|
// ==============================================================
|
||||||
|
|
||||||
typedef struct NATIVE_STACK NATIVE_STACK;
|
typedef struct NATIVE_STACK NATIVE_STACK;
|
||||||
|
typedef struct IPTABLES_STATE IPTABLES_STATE;
|
||||||
|
typedef struct IPTABLES_ENTRY IPTABLES_ENTRY;
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
@ -751,7 +765,3 @@ typedef struct SU_ADAPTER_LIST SU_ADAPTER_LIST;
|
|||||||
|
|
||||||
|
|
||||||
#endif // CEDARTYPE_H
|
#endif // CEDARTYPE_H
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Contributors:
|
// Contributors:
|
||||||
// - nattoheaven (https://github.com/nattoheaven)
|
// - nattoheaven (https://github.com/nattoheaven)
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
@ -2181,13 +2181,14 @@ BUF *CiAccountToCfg(RPC_CLIENT_CREATE_ACCOUNT *t)
|
|||||||
// RPC dispatch routine
|
// RPC dispatch routine
|
||||||
PACK *CiRpcDispatch(RPC *rpc, char *name, PACK *p)
|
PACK *CiRpcDispatch(RPC *rpc, char *name, PACK *p)
|
||||||
{
|
{
|
||||||
CLIENT *c = rpc->Param;
|
|
||||||
PACK *ret;
|
PACK *ret;
|
||||||
|
CLIENT *c;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (rpc == NULL || name == NULL || p == NULL)
|
if (rpc == NULL || name == NULL || p == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
c = rpc->Param;
|
||||||
|
|
||||||
ret = NewPack();
|
ret = NewPack();
|
||||||
|
|
||||||
@ -6029,12 +6030,13 @@ L_TRY:
|
|||||||
ReleaseSock(s);
|
ReleaseSock(s);
|
||||||
|
|
||||||
ret = ZeroMalloc(sizeof(REMOTE_CLIENT));
|
ret = ZeroMalloc(sizeof(REMOTE_CLIENT));
|
||||||
ret->Rpc = rpc;
|
|
||||||
rpc->Param = ret;
|
rpc->Param = ret;
|
||||||
|
|
||||||
if (ret != NULL)
|
if (ret != NULL)
|
||||||
{
|
{
|
||||||
RPC_CLIENT_VERSION t;
|
RPC_CLIENT_VERSION t;
|
||||||
|
|
||||||
|
ret->Rpc = rpc;
|
||||||
Zero(&t, sizeof(t));
|
Zero(&t, sizeof(t));
|
||||||
CcGetClientVersion(ret, &t);
|
CcGetClientVersion(ret, &t);
|
||||||
ret->OsType = t.OsType;
|
ret->OsType = t.OsType;
|
||||||
@ -6487,7 +6489,7 @@ bool Win32CiSecureSign(SECURE_SIGN *sign)
|
|||||||
// Success
|
// Success
|
||||||
ret = true;
|
ret = true;
|
||||||
sign->ClientCert = batch[0].OutputX;
|
sign->ClientCert = batch[0].OutputX;
|
||||||
Copy(sign->Signature, batch[1].OutputSign, 128);
|
Copy(sign->Signature, batch[1].OutputSign, MIN(sizeof(sign->Signature),sizeof(batch[1].OutputSign)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6661,7 +6663,7 @@ bool CtConnect(CLIENT *c, RPC_CLIENT_CONNECT *connect)
|
|||||||
CiSetError(c, ERR_ACCOUNT_ACTIVE);
|
CiSetError(c, ERR_ACCOUNT_ACTIVE);
|
||||||
}
|
}
|
||||||
else if (r->ClientAuth->AuthType == CLIENT_AUTHTYPE_SECURE &&
|
else if (r->ClientAuth->AuthType == CLIENT_AUTHTYPE_SECURE &&
|
||||||
client->UseSecureDeviceId == 0)
|
c->UseSecureDeviceId == 0)
|
||||||
{
|
{
|
||||||
// Secure device is not specified
|
// Secure device is not specified
|
||||||
CiSetError(c, ERR_NO_SECURE_DEVICE_SPECIFIED);
|
CiSetError(c, ERR_NO_SECURE_DEVICE_SPECIFIED);
|
||||||
@ -8450,7 +8452,7 @@ bool CtCreateVLan(CLIENT *c, RPC_CLIENT_CREATE_VLAN *create)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regulation in Windows 8
|
// Regulation in Windows 8 / 10
|
||||||
if (MsIsInfCatalogRequired())
|
if (MsIsInfCatalogRequired())
|
||||||
{
|
{
|
||||||
if (CiIsValidVLanRegulatedName(create->DeviceName) == false)
|
if (CiIsValidVLanRegulatedName(create->DeviceName) == false)
|
||||||
@ -11110,7 +11112,3 @@ void CiClientStatusPrinter(SESSION *s, wchar_t *status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -878,7 +878,3 @@ void CiInitDriverVerStruct(MS_DRIVER_VER *ver);
|
|||||||
#endif // CLIENT_H
|
#endif // CLIENT_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -1166,6 +1166,7 @@ void TtGenerateRandomData(UCHAR **buf, UINT *size)
|
|||||||
void TtsWorkerThread(THREAD *thread, void *param)
|
void TtsWorkerThread(THREAD *thread, void *param)
|
||||||
{
|
{
|
||||||
TTS *tts;
|
TTS *tts;
|
||||||
|
TTS_WORKER *w;
|
||||||
UINT buf_size;
|
UINT buf_size;
|
||||||
UCHAR *send_buf_data, *recv_buf_data;
|
UCHAR *send_buf_data, *recv_buf_data;
|
||||||
bool all_sockets_blocked = false;
|
bool all_sockets_blocked = false;
|
||||||
@ -1185,14 +1186,15 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
TtGenerateRandomData(&send_buf_data, &buf_size);
|
TtGenerateRandomData(&send_buf_data, &buf_size);
|
||||||
TtGenerateRandomData(&recv_buf_data, &buf_size);
|
TtGenerateRandomData(&recv_buf_data, &buf_size);
|
||||||
|
|
||||||
tts = (TTS *)param;
|
w = (TTS_WORKER *)param;
|
||||||
|
tts = (TTS *)w->Tts;
|
||||||
|
|
||||||
// Preparation of socket events
|
// Preparation of socket events
|
||||||
tts->SockEvent = NewSockEvent();
|
w->SockEvent = NewSockEvent();
|
||||||
AddRef(tts->SockEvent->ref);
|
AddRef(w->SockEvent->ref);
|
||||||
|
|
||||||
// Preparing the Server socket list
|
// Preparing the Server socket list
|
||||||
tts->TtsSockList = NewList(NULL);
|
w->TtsSockList = NewList(NULL);
|
||||||
|
|
||||||
// Notify completion of preparation to parent thread
|
// Notify completion of preparation to parent thread
|
||||||
NoticeThreadInit(thread);
|
NoticeThreadInit(thread);
|
||||||
@ -1206,12 +1208,12 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
// Wait for all sockets
|
// Wait for all sockets
|
||||||
if (dont_block_next_time == false)
|
if (dont_block_next_time == false)
|
||||||
{
|
{
|
||||||
WaitSockEvent(tts->SockEvent, 50);
|
WaitSockEvent(w->SockEvent, 50);
|
||||||
}
|
}
|
||||||
dont_block_next_time = false;
|
dont_block_next_time = false;
|
||||||
|
|
||||||
// Process for sockets that are currently registered
|
// Process for sockets that are currently registered
|
||||||
LockList(tts->TtsSockList);
|
LockList(w->TtsSockList);
|
||||||
{
|
{
|
||||||
UINT i;
|
UINT i;
|
||||||
|
|
||||||
@ -1223,17 +1225,17 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
all_sockets_blocked = true;
|
all_sockets_blocked = true;
|
||||||
|
|
||||||
for (i = 0;i < LIST_NUM(tts->TtsSockList);i++)
|
for (i = 0;i < LIST_NUM(w->TtsSockList);i++)
|
||||||
{
|
{
|
||||||
UINT ret = SOCK_LATER;
|
UINT ret = SOCK_LATER;
|
||||||
UCHAR *send_data = NULL, *recv_data = NULL;
|
UCHAR *send_data = NULL, *recv_data = NULL;
|
||||||
UINT send_size = 0, recv_size = 0;
|
UINT send_size = 0, recv_size = 0;
|
||||||
TTS_SOCK *ts = LIST_DATA(tts->TtsSockList, i);
|
TTS_SOCK *ts = LIST_DATA(w->TtsSockList, i);
|
||||||
bool blocked_for_this_socket = false;
|
bool blocked_for_this_socket = false;
|
||||||
|
|
||||||
if (ts->SockJoined == false)
|
if (ts->SockJoined == false)
|
||||||
{
|
{
|
||||||
JoinSockToSockEvent(ts->Sock, tts->SockEvent);
|
JoinSockToSockEvent(ts->Sock, w->SockEvent);
|
||||||
ts->SockJoined = true;
|
ts->SockJoined = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1245,6 +1247,7 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
if (ret != 0 && ret != SOCK_LATER)
|
if (ret != 0 && ret != SOCK_LATER)
|
||||||
{
|
{
|
||||||
ts->State = 5;
|
ts->State = 5;
|
||||||
|
ts->LastCommTime = now;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1255,6 +1258,8 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
UCHAR c;
|
UCHAR c;
|
||||||
|
|
||||||
|
ts->LastCommTime = now;
|
||||||
|
|
||||||
// Direction of the data is in the first byte that is received
|
// Direction of the data is in the first byte that is received
|
||||||
c = recv_buf_data[0];
|
c = recv_buf_data[0];
|
||||||
|
|
||||||
@ -1276,6 +1281,8 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
// Span
|
// Span
|
||||||
ts->Span = READ_UINT64(recv_buf_data + sizeof(UINT64) + 1);
|
ts->Span = READ_UINT64(recv_buf_data + sizeof(UINT64) + 1);
|
||||||
|
|
||||||
|
ts->GiveupSpan = ts->Span * 3ULL + 180000ULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1289,6 +1296,8 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
// Checking the first byte of received
|
// Checking the first byte of received
|
||||||
UCHAR c = recv_buf_data[0];
|
UCHAR c = recv_buf_data[0];
|
||||||
|
|
||||||
|
ts->LastCommTime = now;
|
||||||
|
|
||||||
if (ts->FirstRecvTick == 0)
|
if (ts->FirstRecvTick == 0)
|
||||||
{
|
{
|
||||||
// Record the time at which the data has been received for the first
|
// Record the time at which the data has been received for the first
|
||||||
@ -1326,11 +1335,42 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
if (ts->NoMoreSendData == false)
|
if (ts->NoMoreSendData == false)
|
||||||
{
|
{
|
||||||
ret = Send(ts->Sock, send_buf_data, buf_size, false);
|
ret = Send(ts->Sock, send_buf_data, buf_size, false);
|
||||||
|
|
||||||
|
if (ret != 0 && ret != SOCK_LATER)
|
||||||
|
{
|
||||||
|
ts->LastCommTime = now;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret = Recv(ts->Sock, recv_buf_data, buf_size, false);
|
ret = Recv(ts->Sock, recv_buf_data, buf_size, false);
|
||||||
|
|
||||||
|
if (ret != 0 && ret != SOCK_LATER)
|
||||||
|
{
|
||||||
|
ts->LastCommTime = now;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ts->FirstSendTick == 0)
|
||||||
|
{
|
||||||
|
ts->FirstSendTick = now;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ts->FirstSendTick <= now)
|
||||||
|
{
|
||||||
|
if (ts->Span != 0)
|
||||||
|
{
|
||||||
|
UINT64 giveup_tick = ts->FirstSendTick + ts->Span * 3ULL + 180000ULL;
|
||||||
|
|
||||||
|
if (now > giveup_tick)
|
||||||
|
{
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
@ -1343,6 +1383,11 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
ret = Send(ts->Sock, &tmp64, sizeof(tmp64), false);
|
ret = Send(ts->Sock, &tmp64, sizeof(tmp64), false);
|
||||||
|
|
||||||
|
if (ret != 0 && ret != SOCK_LATER)
|
||||||
|
{
|
||||||
|
ts->LastCommTime = now;
|
||||||
|
}
|
||||||
|
|
||||||
if (ret != SOCK_LATER)
|
if (ret != SOCK_LATER)
|
||||||
{
|
{
|
||||||
UINT j;
|
UINT j;
|
||||||
@ -1353,9 +1398,9 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
// Not to send more data to the socket of the
|
// Not to send more data to the socket of the
|
||||||
// transmission direction in the same session ID
|
// transmission direction in the same session ID
|
||||||
for (j = 0;j < LIST_NUM(tts->TtsSockList);j++)
|
for (j = 0;j < LIST_NUM(w->TtsSockList);j++)
|
||||||
{
|
{
|
||||||
TTS_SOCK *ts2 = LIST_DATA(tts->TtsSockList, j);
|
TTS_SOCK *ts2 = LIST_DATA(w->TtsSockList, j);
|
||||||
|
|
||||||
if (ts2->SessionId == ts->SessionId &&
|
if (ts2->SessionId == ts->SessionId &&
|
||||||
ts2 != ts)
|
ts2 != ts)
|
||||||
@ -1369,6 +1414,12 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (now > (ts->LastCommTime + ts->GiveupSpan))
|
||||||
|
{
|
||||||
|
// Timeout: disconnect orphan sessions
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
// Mark as deleting the socket because it is disconnected
|
// Mark as deleting the socket because it is disconnected
|
||||||
@ -1408,7 +1459,7 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
Disconnect(ts->Sock);
|
Disconnect(ts->Sock);
|
||||||
ReleaseSock(ts->Sock);
|
ReleaseSock(ts->Sock);
|
||||||
|
|
||||||
Delete(tts->TtsSockList, ts);
|
Delete(w->TtsSockList, ts);
|
||||||
|
|
||||||
Free(ts);
|
Free(ts);
|
||||||
}
|
}
|
||||||
@ -1416,23 +1467,23 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
DeleteAll(o);
|
DeleteAll(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tts->NewSocketArrived || tts->Halt)
|
if (w->NewSocketArrived || tts->Halt)
|
||||||
{
|
{
|
||||||
tts->NewSocketArrived = false;
|
w->NewSocketArrived = false;
|
||||||
all_sockets_blocked = true;
|
all_sockets_blocked = true;
|
||||||
dont_block_next_time = true;
|
dont_block_next_time = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UnlockList(tts->TtsSockList);
|
UnlockList(w->TtsSockList);
|
||||||
}
|
}
|
||||||
|
|
||||||
LockList(tts->TtsSockList);
|
LockList(w->TtsSockList);
|
||||||
{
|
{
|
||||||
// Release the sockets of all remaining
|
// Release the sockets of all remaining
|
||||||
for (i = 0;i < LIST_NUM(tts->TtsSockList);i++)
|
for (i = 0;i < LIST_NUM(w->TtsSockList);i++)
|
||||||
{
|
{
|
||||||
TTS_SOCK *ts = LIST_DATA(tts->TtsSockList, i);
|
TTS_SOCK *ts = LIST_DATA(w->TtsSockList, i);
|
||||||
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTS_DISCONNECT"), ts->Id, ts->Sock->RemoteHostname);
|
UniFormat(tmp, sizeof(tmp), _UU("TTS_DISCONNECT"), ts->Id, ts->Sock->RemoteHostname);
|
||||||
TtPrint(tts->Param, tts->Print, tmp);
|
TtPrint(tts->Param, tts->Print, tmp);
|
||||||
@ -1443,12 +1494,12 @@ void TtsWorkerThread(THREAD *thread, void *param)
|
|||||||
Free(ts);
|
Free(ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UnlockList(tts->TtsSockList);
|
UnlockList(w->TtsSockList);
|
||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
ReleaseList(o);
|
ReleaseList(o);
|
||||||
ReleaseList(tts->TtsSockList);
|
ReleaseList(w->TtsSockList);
|
||||||
ReleaseSockEvent(tts->SockEvent);
|
ReleaseSockEvent(w->SockEvent);
|
||||||
Free(send_buf_data);
|
Free(send_buf_data);
|
||||||
Free(recv_buf_data);
|
Free(recv_buf_data);
|
||||||
}
|
}
|
||||||
@ -1470,6 +1521,7 @@ void TtsIPv6AcceptThread(THREAD *thread, void *param)
|
|||||||
void TtsAcceptProc(TTS *tts, SOCK *listen_socket)
|
void TtsAcceptProc(TTS *tts, SOCK *listen_socket)
|
||||||
{
|
{
|
||||||
wchar_t tmp[MAX_SIZE];
|
wchar_t tmp[MAX_SIZE];
|
||||||
|
UINT seed = 0;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (tts == NULL || listen_socket == NULL)
|
if (tts == NULL || listen_socket == NULL)
|
||||||
{
|
{
|
||||||
@ -1492,26 +1544,42 @@ void TtsAcceptProc(TTS *tts, SOCK *listen_socket)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
UINT num, i;
|
||||||
|
TTS_WORKER *w;
|
||||||
|
|
||||||
// Connected from the client
|
// Connected from the client
|
||||||
AcceptInit(s);
|
AcceptInitEx(s, true);
|
||||||
tts->NewSocketArrived = true;
|
|
||||||
LockList(tts->TtsSockList);
|
// Choose a worker thread
|
||||||
|
num = LIST_NUM(tts->WorkerList);
|
||||||
|
|
||||||
|
i = seed % num;
|
||||||
|
|
||||||
|
seed++;
|
||||||
|
|
||||||
|
w = LIST_DATA(tts->WorkerList, i);
|
||||||
|
|
||||||
|
w->NewSocketArrived = true;
|
||||||
|
LockList(w->TtsSockList);
|
||||||
{
|
{
|
||||||
TTS_SOCK *ts = ZeroMalloc(sizeof(TTS_SOCK));
|
TTS_SOCK *ts = ZeroMalloc(sizeof(TTS_SOCK));
|
||||||
|
|
||||||
ts->Id = (++tts->IdSeed);
|
ts->Id = (++tts->IdSeed);
|
||||||
ts->Sock = s;
|
ts->Sock = s;
|
||||||
|
|
||||||
|
ts->GiveupSpan = (UINT64)(10 * 60 * 1000);
|
||||||
|
ts->LastCommTime = Tick64();
|
||||||
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTS_ACCEPTED"), ts->Id,
|
UniFormat(tmp, sizeof(tmp), _UU("TTS_ACCEPTED"), ts->Id,
|
||||||
s->RemoteHostname, s->RemotePort);
|
s->RemoteHostname, s->RemotePort);
|
||||||
TtPrint(tts->Param, tts->Print, tmp);
|
TtPrint(tts->Param, tts->Print, tmp);
|
||||||
|
|
||||||
Insert(tts->TtsSockList, ts);
|
Insert(w->TtsSockList, ts);
|
||||||
tts->NewSocketArrived = true;
|
w->NewSocketArrived = true;
|
||||||
}
|
}
|
||||||
UnlockList(tts->TtsSockList);
|
UnlockList(w->TtsSockList);
|
||||||
|
|
||||||
SetSockEvent(tts->SockEvent);
|
SetSockEvent(w->SockEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1546,6 +1614,8 @@ void TtsListenThread(THREAD *thread, void *param)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
UINT i, num_worker_threads;
|
||||||
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTS_LISTEN_STARTED"), tts->Port);
|
UniFormat(tmp, sizeof(tmp), _UU("TTS_LISTEN_STARTED"), tts->Port);
|
||||||
TtPrint(tts->Param, tts->Print, tmp);
|
TtPrint(tts->Param, tts->Print, tmp);
|
||||||
|
|
||||||
@ -1569,9 +1639,19 @@ void TtsListenThread(THREAD *thread, void *param)
|
|||||||
AddRef(tts->ListenSocketV6->ref);
|
AddRef(tts->ListenSocketV6->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the worker thread
|
num_worker_threads = GetNumberOfCpu();
|
||||||
tts->WorkThread = NewThread(TtsWorkerThread, tts);
|
|
||||||
WaitThreadInit(tts->WorkThread);
|
// Start the worker threads
|
||||||
|
for (i = 0;i < num_worker_threads;i++)
|
||||||
|
{
|
||||||
|
TTS_WORKER *w = ZeroMalloc(sizeof(TTS_WORKER));
|
||||||
|
|
||||||
|
w->Tts = tts;
|
||||||
|
w->WorkThread = NewThread(TtsWorkerThread, w);
|
||||||
|
WaitThreadInit(w->WorkThread);
|
||||||
|
|
||||||
|
Add(tts->WorkerList, w);
|
||||||
|
}
|
||||||
|
|
||||||
// Notify completion of preparation to parent thread
|
// Notify completion of preparation to parent thread
|
||||||
NoticeThreadInit(thread);
|
NoticeThreadInit(thread);
|
||||||
@ -1595,12 +1675,20 @@ void TtsListenThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
ReleaseSock(tts->ListenSocket);
|
ReleaseSock(tts->ListenSocket);
|
||||||
ReleaseSock(tts->ListenSocketV6);
|
ReleaseSock(tts->ListenSocketV6);
|
||||||
SetSockEvent(tts->SockEvent);
|
|
||||||
|
for (i = 0;i < LIST_NUM(tts->WorkerList);i++)
|
||||||
|
{
|
||||||
|
TTS_WORKER *w = LIST_DATA(tts->WorkerList, i);
|
||||||
|
|
||||||
|
SetSockEvent(w->SockEvent);
|
||||||
|
|
||||||
// Wait for stopping the worker thread
|
// Wait for stopping the worker thread
|
||||||
WaitThread(tts->WorkThread, INFINITE);
|
WaitThread(w->WorkThread, INFINITE);
|
||||||
ReleaseThread(tts->WorkThread);
|
ReleaseThread(w->WorkThread);
|
||||||
ReleaseSockEvent(tts->SockEvent);
|
ReleaseSockEvent(w->SockEvent);
|
||||||
|
|
||||||
|
Free(w);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1685,7 +1773,6 @@ void StopTtc(TTC *ttc)
|
|||||||
TtPrint(ttc->Param, ttc->Print, _UU("TTC_STOPPING"));
|
TtPrint(ttc->Param, ttc->Print, _UU("TTC_STOPPING"));
|
||||||
|
|
||||||
ttc->Halt = true;
|
ttc->Halt = true;
|
||||||
SetSockEvent(ttc->SockEvent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate a result
|
// Generate a result
|
||||||
@ -1748,136 +1835,36 @@ void TtcGenerateResult(TTC *ttc)
|
|||||||
res->BpsTotal = res->BpsUpload + res->BpsDownload;
|
res->BpsTotal = res->BpsUpload + res->BpsDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client thread
|
// Client worker thread
|
||||||
void TtcThread(THREAD *thread, void *param)
|
void TtcWorkerThread(THREAD *thread, void *param)
|
||||||
{
|
{
|
||||||
|
TTC_WORKER *w;
|
||||||
TTC *ttc;
|
TTC *ttc;
|
||||||
UINT i;
|
bool dont_block_next_time = false;
|
||||||
|
bool halting = false;
|
||||||
|
UINT64 halt_timeout = 0;
|
||||||
|
bool all_sockets_blocked;
|
||||||
wchar_t tmp[MAX_SIZE];
|
wchar_t tmp[MAX_SIZE];
|
||||||
bool ok = false;
|
|
||||||
UINT buf_size;
|
|
||||||
UCHAR *send_buf_data, *recv_buf_data;
|
UCHAR *send_buf_data, *recv_buf_data;
|
||||||
// Validate arguments
|
UINT buf_size;
|
||||||
|
UINT64 tmp64;
|
||||||
|
|
||||||
if (thread == NULL || param == NULL)
|
if (thread == NULL || param == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w = (TTC_WORKER *)param;
|
||||||
|
ttc = w->Ttc;
|
||||||
|
|
||||||
// Allocate the data area
|
// Allocate the data area
|
||||||
TtGenerateRandomData(&send_buf_data, &buf_size);
|
TtGenerateRandomData(&send_buf_data, &buf_size);
|
||||||
TtGenerateRandomData(&recv_buf_data, &buf_size);
|
TtGenerateRandomData(&recv_buf_data, &buf_size);
|
||||||
|
|
||||||
ttc = (TTC *)param;
|
|
||||||
|
|
||||||
ttc->SockEvent = NewSockEvent();
|
|
||||||
AddRef(ttc->SockEvent->ref);
|
|
||||||
|
|
||||||
// Ready
|
|
||||||
NoticeThreadInit(thread);
|
NoticeThreadInit(thread);
|
||||||
|
|
||||||
TtcPrintSummary(ttc);
|
// Wait for start
|
||||||
|
Wait(w->StartEvent, INFINITE);
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_START"),
|
|
||||||
ttc->Host, ttc->Port, ttc->NumTcp);
|
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
|
||||||
|
|
||||||
// Establish all connections to the client
|
|
||||||
ttc->ItcSockList = NewList(NULL);
|
|
||||||
|
|
||||||
ok = true;
|
|
||||||
|
|
||||||
for (i = 0;i < ttc->NumTcp;i++)
|
|
||||||
{
|
|
||||||
SOCK *s;
|
|
||||||
TTC_SOCK *ts = ZeroMalloc(sizeof(TTC_SOCK));
|
|
||||||
|
|
||||||
ts->Id = i + 1;
|
|
||||||
|
|
||||||
if (ttc->Type == TRAFFIC_TYPE_DOWNLOAD)
|
|
||||||
{
|
|
||||||
ts->Download = true;
|
|
||||||
}
|
|
||||||
else if (ttc->Type == TRAFFIC_TYPE_UPLOAD)
|
|
||||||
{
|
|
||||||
ts->Download = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ts->Download = ((i % 2) == 0) ? true : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = ConnectEx2(ttc->Host, ttc->Port, 0, ttc->Cancel);
|
|
||||||
|
|
||||||
if (s == NULL)
|
|
||||||
{
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_FAILED"), i + 1);
|
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
|
||||||
ok = false;
|
|
||||||
Free(ts);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char buffer[TRAFFIC_VER_STR_SIZE];
|
|
||||||
|
|
||||||
SetTimeout(s, 5000);
|
|
||||||
|
|
||||||
Zero(buffer, sizeof(buffer));
|
|
||||||
if (Recv(s, buffer, sizeof(buffer), false) != sizeof(buffer) || Cmp(buffer, TRAFFIC_VER_STR, TRAFFIC_VER_STR_SIZE) != 0)
|
|
||||||
{
|
|
||||||
TtPrint(ttc->Param, ttc->Print, _UU("TTC_CONNECT_NOT_SERVER"));
|
|
||||||
ok = false;
|
|
||||||
ReleaseSock(s);
|
|
||||||
Free(ts);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_OK"), i + 1);
|
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
|
||||||
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_OK_2"), GetTtcTypeStr(ts->Download ? TRAFFIC_TYPE_DOWNLOAD : TRAFFIC_TYPE_UPLOAD));
|
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
|
||||||
|
|
||||||
ts->Sock = s;
|
|
||||||
|
|
||||||
SetTimeout(s, TIMEOUT_INFINITE);
|
|
||||||
|
|
||||||
JoinSockToSockEvent(s, ttc->SockEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
Insert(ttc->ItcSockList, ts);
|
|
||||||
}
|
|
||||||
|
|
||||||
Set(ttc->InitedEvent);
|
|
||||||
|
|
||||||
if (ttc->StartEvent != NULL)
|
|
||||||
{
|
|
||||||
Wait(ttc->StartEvent, INFINITE);
|
|
||||||
SleepThread(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ok)
|
|
||||||
{
|
|
||||||
bool all_sockets_blocked;
|
|
||||||
bool dont_block_next_time = false;
|
|
||||||
bool halt_flag = false;
|
|
||||||
UINT64 start_tick, end_tick;
|
|
||||||
UINT64 halt_timeout = 0;
|
|
||||||
wchar_t tmp1[MAX_SIZE], tmp2[MAX_SIZE];
|
|
||||||
UINT check_clock_seed = 0;
|
|
||||||
bool halting = false;
|
|
||||||
UINT64 tmp64;
|
|
||||||
UINT64 session_id = Rand64();
|
|
||||||
|
|
||||||
// Record the current time
|
|
||||||
start_tick = Tick64();
|
|
||||||
end_tick = start_tick + ttc->Span;
|
|
||||||
|
|
||||||
// Show start message
|
|
||||||
GetDateTimeStrEx64(tmp1, sizeof(tmp1), SystemToLocal64(TickToTime(start_tick)), NULL);
|
|
||||||
GetDateTimeStrEx64(tmp2, sizeof(tmp2), SystemToLocal64(TickToTime(end_tick)), NULL);
|
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_COMM_START"), tmp1, tmp2);
|
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
|
||||||
|
|
||||||
// Main loop
|
// Main loop
|
||||||
while (true)
|
while (true)
|
||||||
@ -1886,7 +1873,7 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
if (dont_block_next_time == false)
|
if (dont_block_next_time == false)
|
||||||
{
|
{
|
||||||
WaitSockEvent(ttc->SockEvent, 50);
|
WaitSockEvent(w->SockEvent, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
dont_block_next_time = false;
|
dont_block_next_time = false;
|
||||||
@ -1897,25 +1884,34 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ttc->Halt || end_tick <= Tick64() || (ttc->Cancel != NULL && (*ttc->Cancel)))
|
if (ttc->Halt || ttc->end_tick <= Tick64() || (ttc->Cancel != NULL && (*ttc->Cancel)))
|
||||||
{
|
{
|
||||||
// End measurement
|
// End measurement
|
||||||
if (halting == false)
|
if (halting == false)
|
||||||
{
|
{
|
||||||
if (ttc->Halt || (ttc->Cancel != NULL && (*ttc->Cancel)))
|
if (ttc->Halt || (ttc->Cancel != NULL && (*ttc->Cancel)))
|
||||||
|
{
|
||||||
|
if ((ttc->flag1++) == 0)
|
||||||
{
|
{
|
||||||
// User cancel
|
// User cancel
|
||||||
TtPrint(ttc->Param, ttc->Print, _UU("TTC_COMM_USER_CANCEL"));
|
TtPrint(ttc->Param, ttc->Print, _UU("TTC_COMM_USER_CANCEL"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Time elapsed
|
// Time elapsed
|
||||||
|
if ((ttc->flag2++) == 0)
|
||||||
|
{
|
||||||
UniFormat(tmp, sizeof(tmp), _UU("TTC_COMM_END"),
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_COMM_END"),
|
||||||
(double)ttc->Span / 1000.0);
|
(double)ttc->Span / 1000.0);
|
||||||
TtPrint(ttc->Param, ttc->Print, tmp);
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ttc->RealSpan = Tick64() - start_tick;
|
if (ttc->RealSpan == 0)
|
||||||
|
{
|
||||||
|
ttc->RealSpan = Tick64() - ttc->start_tick;
|
||||||
|
}
|
||||||
|
|
||||||
halting = true;
|
halting = true;
|
||||||
|
|
||||||
@ -1929,9 +1925,9 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
|
||||||
// Wait that all TCP connections to finish processing
|
// Wait that all TCP connections to finish processing
|
||||||
for (i = 0;i < LIST_NUM(ttc->ItcSockList);i++)
|
for (i = 0;i < LIST_NUM(w->SockList);i++)
|
||||||
{
|
{
|
||||||
TTC_SOCK *ts = LIST_DATA(ttc->ItcSockList, i);
|
TTC_SOCK *ts = LIST_DATA(w->SockList, i);
|
||||||
|
|
||||||
if (ts->Download == false)
|
if (ts->Download == false)
|
||||||
{
|
{
|
||||||
@ -1945,8 +1941,7 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
// Measurement completed
|
// Measurement completed
|
||||||
// Show the result
|
w->Ok = true;
|
||||||
TtcGenerateResult(ttc);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1969,10 +1964,10 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
all_sockets_blocked = true;
|
all_sockets_blocked = true;
|
||||||
|
|
||||||
for (i = 0;i < LIST_NUM(ttc->ItcSockList);i++)
|
for (i = 0;i < LIST_NUM(w->SockList);i++)
|
||||||
{
|
{
|
||||||
UINT ret = SOCK_LATER;
|
UINT ret = SOCK_LATER;
|
||||||
TTC_SOCK *ts = LIST_DATA(ttc->ItcSockList, i);
|
TTC_SOCK *ts = LIST_DATA(w->SockList, i);
|
||||||
bool blocked_for_this_socket = false;
|
bool blocked_for_this_socket = false;
|
||||||
UCHAR c = 0;
|
UCHAR c = 0;
|
||||||
UCHAR c_and_session_id[1 + sizeof(UINT64) + sizeof(UINT64)];
|
UCHAR c_and_session_id[1 + sizeof(UINT64) + sizeof(UINT64)];
|
||||||
@ -2015,7 +2010,7 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
c_and_session_id[0] = c;
|
c_and_session_id[0] = c;
|
||||||
WRITE_UINT64(c_and_session_id + 1, session_id);
|
WRITE_UINT64(c_and_session_id + 1, ttc->session_id);
|
||||||
WRITE_UINT64(c_and_session_id + sizeof(UINT64) + 1, ttc->Span);
|
WRITE_UINT64(c_and_session_id + sizeof(UINT64) + 1, ttc->Span);
|
||||||
|
|
||||||
ret = Send(ts->Sock, c_and_session_id, 1 + sizeof(UINT64) + sizeof(UINT64), false);
|
ret = Send(ts->Sock, c_and_session_id, 1 + sizeof(UINT64) + sizeof(UINT64), false);
|
||||||
@ -2123,13 +2118,231 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
dont_block_next_time = true;
|
dont_block_next_time = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (end_tick <= Tick64())
|
if (ttc->end_tick <= Tick64())
|
||||||
{
|
{
|
||||||
all_sockets_blocked = true;
|
all_sockets_blocked = true;
|
||||||
dont_block_next_time = true;
|
dont_block_next_time = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Free(send_buf_data);
|
||||||
|
Free(recv_buf_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Client thread
|
||||||
|
void TtcThread(THREAD *thread, void *param)
|
||||||
|
{
|
||||||
|
TTC *ttc;
|
||||||
|
UINT i;
|
||||||
|
wchar_t tmp[MAX_SIZE];
|
||||||
|
bool ok = false;
|
||||||
|
IP ip_ret;
|
||||||
|
// Validate arguments
|
||||||
|
if (thread == NULL || param == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ttc = (TTC *)param;
|
||||||
|
|
||||||
|
// Ready
|
||||||
|
NoticeThreadInit(thread);
|
||||||
|
|
||||||
|
TtcPrintSummary(ttc);
|
||||||
|
|
||||||
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_START"),
|
||||||
|
ttc->Host, ttc->Port, ttc->NumTcp);
|
||||||
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
|
|
||||||
|
// Establish all connections to the client
|
||||||
|
ttc->ItcSockList = NewList(NULL);
|
||||||
|
|
||||||
|
ok = true;
|
||||||
|
|
||||||
|
Zero(&ip_ret, sizeof(ip_ret));
|
||||||
|
|
||||||
|
for (i = 0;i < ttc->NumTcp;i++)
|
||||||
|
{
|
||||||
|
SOCK *s;
|
||||||
|
TTC_SOCK *ts = ZeroMalloc(sizeof(TTC_SOCK));
|
||||||
|
char target_host[MAX_SIZE];
|
||||||
|
|
||||||
|
ts->Id = i + 1;
|
||||||
|
|
||||||
|
if (ttc->Type == TRAFFIC_TYPE_DOWNLOAD)
|
||||||
|
{
|
||||||
|
ts->Download = true;
|
||||||
|
}
|
||||||
|
else if (ttc->Type == TRAFFIC_TYPE_UPLOAD)
|
||||||
|
{
|
||||||
|
ts->Download = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ts->Download = ((i % 2) == 0) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
StrCpy(target_host, sizeof(target_host), ttc->Host);
|
||||||
|
|
||||||
|
if (IsZeroIp(&ip_ret) == false)
|
||||||
|
{
|
||||||
|
IPToStr(target_host, sizeof(target_host), &ip_ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
s = ConnectEx4(target_host, ttc->Port, 0, ttc->Cancel, NULL, NULL, false, false, true, &ip_ret);
|
||||||
|
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_FAILED"), i + 1);
|
||||||
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
|
ok = false;
|
||||||
|
Free(ts);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char buffer[TRAFFIC_VER_STR_SIZE];
|
||||||
|
|
||||||
|
SetTimeout(s, 5000);
|
||||||
|
|
||||||
|
Zero(buffer, sizeof(buffer));
|
||||||
|
if (Recv(s, buffer, sizeof(buffer), false) != sizeof(buffer) || Cmp(buffer, TRAFFIC_VER_STR, TRAFFIC_VER_STR_SIZE) != 0)
|
||||||
|
{
|
||||||
|
TtPrint(ttc->Param, ttc->Print, _UU("TTC_CONNECT_NOT_SERVER"));
|
||||||
|
ok = false;
|
||||||
|
ReleaseSock(s);
|
||||||
|
Free(ts);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_OK"), i + 1);
|
||||||
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
|
|
||||||
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_CONNECT_OK_2"), GetTtcTypeStr(ts->Download ? TRAFFIC_TYPE_DOWNLOAD : TRAFFIC_TYPE_UPLOAD));
|
||||||
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
|
|
||||||
|
ts->Sock = s;
|
||||||
|
|
||||||
|
SetTimeout(s, TIMEOUT_INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
Insert(ttc->ItcSockList, ts);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set(ttc->InitedEvent);
|
||||||
|
|
||||||
|
if (ttc->StartEvent != NULL)
|
||||||
|
{
|
||||||
|
Wait(ttc->StartEvent, INFINITE);
|
||||||
|
SleepThread(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
UINT64 start_tick, end_tick;
|
||||||
|
UINT64 halt_timeout = 0;
|
||||||
|
wchar_t tmp1[MAX_SIZE], tmp2[MAX_SIZE];
|
||||||
|
UINT check_clock_seed = 0;
|
||||||
|
bool halting = false;
|
||||||
|
UINT64 session_id = Rand64();
|
||||||
|
UINT i, num_cpu;
|
||||||
|
bool all_ok = false;
|
||||||
|
|
||||||
|
ttc->session_id = session_id;
|
||||||
|
|
||||||
|
num_cpu = GetNumberOfCpu();
|
||||||
|
|
||||||
|
ttc->WorkerThreadList = NewList(NULL);
|
||||||
|
|
||||||
|
for (i = 0;i < num_cpu;i++)
|
||||||
|
{
|
||||||
|
TTC_WORKER *w = ZeroMalloc(sizeof(TTC_WORKER));
|
||||||
|
|
||||||
|
w->Ttc = ttc;
|
||||||
|
w->SockList = NewList(NULL);
|
||||||
|
w->StartEvent = NewEvent();
|
||||||
|
w->SockEvent = NewSockEvent();
|
||||||
|
|
||||||
|
w->WorkerThread = NewThread(TtcWorkerThread, w);
|
||||||
|
|
||||||
|
WaitThreadInit(w->WorkerThread);
|
||||||
|
|
||||||
|
Add(ttc->WorkerThreadList, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign each of sockets to each of worker threads
|
||||||
|
for (i = 0;i < LIST_NUM(ttc->ItcSockList);i++)
|
||||||
|
{
|
||||||
|
TTC_SOCK *ts = LIST_DATA(ttc->ItcSockList, i);
|
||||||
|
UINT num = LIST_NUM(ttc->WorkerThreadList);
|
||||||
|
UINT j = i % num;
|
||||||
|
TTC_WORKER *w = LIST_DATA(ttc->WorkerThreadList, j);
|
||||||
|
|
||||||
|
Add(w->SockList, ts);
|
||||||
|
|
||||||
|
JoinSockToSockEvent(ts->Sock, w->SockEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Record the current time
|
||||||
|
start_tick = Tick64();
|
||||||
|
end_tick = start_tick + ttc->Span;
|
||||||
|
|
||||||
|
ttc->start_tick = start_tick;
|
||||||
|
ttc->end_tick = end_tick;
|
||||||
|
|
||||||
|
// Set the start event for all worker threads
|
||||||
|
for (i = 0;i < LIST_NUM(ttc->WorkerThreadList);i++)
|
||||||
|
{
|
||||||
|
TTC_WORKER *w = LIST_DATA(ttc->WorkerThreadList, i);
|
||||||
|
|
||||||
|
Set(w->StartEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show start message
|
||||||
|
GetDateTimeStrEx64(tmp1, sizeof(tmp1), SystemToLocal64(TickToTime(start_tick)), NULL);
|
||||||
|
GetDateTimeStrEx64(tmp2, sizeof(tmp2), SystemToLocal64(TickToTime(end_tick)), NULL);
|
||||||
|
UniFormat(tmp, sizeof(tmp), _UU("TTC_COMM_START"), tmp1, tmp2);
|
||||||
|
TtPrint(ttc->Param, ttc->Print, tmp);
|
||||||
|
|
||||||
|
// Wait for all worker threads finish
|
||||||
|
all_ok = true;
|
||||||
|
for (i = 0;i < LIST_NUM(ttc->WorkerThreadList);i++)
|
||||||
|
{
|
||||||
|
TTC_WORKER *w = LIST_DATA(ttc->WorkerThreadList, i);
|
||||||
|
|
||||||
|
WaitThread(w->WorkerThread, INFINITE);
|
||||||
|
|
||||||
|
if (w->Ok == false)
|
||||||
|
{
|
||||||
|
all_ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (all_ok)
|
||||||
|
{
|
||||||
|
// Measurement completed
|
||||||
|
// Show the result
|
||||||
|
TtcGenerateResult(ttc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release worker threads
|
||||||
|
for (i = 0;i < LIST_NUM(ttc->WorkerThreadList);i++)
|
||||||
|
{
|
||||||
|
TTC_WORKER *w = LIST_DATA(ttc->WorkerThreadList, i);
|
||||||
|
|
||||||
|
ReleaseThread(w->WorkerThread);
|
||||||
|
|
||||||
|
ReleaseEvent(w->StartEvent);
|
||||||
|
ReleaseList(w->SockList);
|
||||||
|
|
||||||
|
ReleaseSockEvent(w->SockEvent);
|
||||||
|
|
||||||
|
Free(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReleaseList(ttc->WorkerThreadList);
|
||||||
|
ttc->WorkerThreadList = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2148,10 +2361,7 @@ void TtcThread(THREAD *thread, void *param)
|
|||||||
Free(ts);
|
Free(ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReleaseSockEvent(ttc->SockEvent);
|
|
||||||
ReleaseList(ttc->ItcSockList);
|
ReleaseList(ttc->ItcSockList);
|
||||||
Free(send_buf_data);
|
|
||||||
Free(recv_buf_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the communication throughput measurement client
|
// Start the communication throughput measurement client
|
||||||
@ -2217,7 +2427,6 @@ UINT FreeTtc(TTC *ttc, TT_RESULT *result)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReleaseSockEvent(ttc->SockEvent);
|
|
||||||
ReleaseEvent(ttc->InitedEvent);
|
ReleaseEvent(ttc->InitedEvent);
|
||||||
|
|
||||||
Free(ttc);
|
Free(ttc);
|
||||||
@ -2238,6 +2447,8 @@ TTS *NewTts(UINT port, void *param, TT_PRINT_PROC *print_proc)
|
|||||||
|
|
||||||
TtPrint(param, print_proc, _UU("TTS_INIT"));
|
TtPrint(param, print_proc, _UU("TTS_INIT"));
|
||||||
|
|
||||||
|
tts->WorkerList = NewList(NULL);
|
||||||
|
|
||||||
// Creating a thread
|
// Creating a thread
|
||||||
t = NewThread(TtsListenThread, tts);
|
t = NewThread(TtsListenThread, tts);
|
||||||
WaitThreadInit(t);
|
WaitThreadInit(t);
|
||||||
@ -2274,6 +2485,8 @@ UINT FreeTts(TTS *tts)
|
|||||||
|
|
||||||
ret = tts->ErrorCode;
|
ret = tts->ErrorCode;
|
||||||
|
|
||||||
|
ReleaseList(tts->WorkerList);
|
||||||
|
|
||||||
Free(tts);
|
Free(tts);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2292,6 +2505,8 @@ void PtTrafficPrintProc(void *param, wchar_t *str)
|
|||||||
c = (CONSOLE *)param;
|
c = (CONSOLE *)param;
|
||||||
|
|
||||||
if (c->ConsoleType == CONSOLE_LOCAL)
|
if (c->ConsoleType == CONSOLE_LOCAL)
|
||||||
|
{
|
||||||
|
Lock(c->OutputLock);
|
||||||
{
|
{
|
||||||
wchar_t tmp[MAX_SIZE];
|
wchar_t tmp[MAX_SIZE];
|
||||||
|
|
||||||
@ -2304,6 +2519,8 @@ void PtTrafficPrintProc(void *param, wchar_t *str)
|
|||||||
}
|
}
|
||||||
UniPrint(L"%s", tmp);
|
UniPrint(L"%s", tmp);
|
||||||
}
|
}
|
||||||
|
Unlock(c->OutputLock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display the communication throughput results
|
// Display the communication throughput results
|
||||||
@ -2392,10 +2609,12 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
LIST *o;
|
LIST *o;
|
||||||
UINT ret = ERR_NO_ERROR;
|
UINT ret = ERR_NO_ERROR;
|
||||||
UINT port;
|
UINT port;
|
||||||
|
bool nohup;
|
||||||
TTS *tts;
|
TTS *tts;
|
||||||
PARAM args[] =
|
PARAM args[] =
|
||||||
{
|
{
|
||||||
{"[port]", NULL, NULL, NULL, NULL},
|
{"[port]", NULL, NULL, NULL, NULL},
|
||||||
|
{"NOHUP", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the parameter list
|
// Get the parameter list
|
||||||
@ -2411,8 +2630,18 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
port = TRAFFIC_DEFAULT_PORT;
|
port = TRAFFIC_DEFAULT_PORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nohup = GetParamYes(o, "nohup");
|
||||||
|
|
||||||
tts = NewTts(port, c, PtTrafficPrintProc);
|
tts = NewTts(port, c, PtTrafficPrintProc);
|
||||||
|
|
||||||
|
if (nohup)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
SleepThread(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
|
c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
|
||||||
|
|
||||||
Free(c->ReadLine(c, L"", true));
|
Free(c->ReadLine(c, L"", true));
|
||||||
@ -8035,7 +8264,7 @@ UINT PsServerCipherGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
RPC_STR t;
|
RPC_STR t;
|
||||||
TOKEN_LIST *ciphers;
|
TOKEN_LIST *ciphers;
|
||||||
UINT i;
|
UINT i;
|
||||||
wchar_t tmp[MAX_SIZE];
|
wchar_t tmp[4096];
|
||||||
|
|
||||||
o = ParseCommandList(c, cmd_name, str, NULL, 0);
|
o = ParseCommandList(c, cmd_name, str, NULL, 0);
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
@ -9996,6 +10225,10 @@ UINT PsLogFileGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
filename = GetParamStr(o, "SAVE");
|
filename = GetParamStr(o, "SAVE");
|
||||||
|
if (IsEmptyStr(filename))
|
||||||
|
{
|
||||||
|
filename = GetParamStr(o, "SAVEPATH");
|
||||||
|
}
|
||||||
|
|
||||||
c->Write(c, _UU("CMD_LogFileGet_START"));
|
c->Write(c, _UU("CMD_LogFileGet_START"));
|
||||||
|
|
||||||
@ -14974,6 +15207,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||||
|
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// If virtual HUB is not selected, it's an error
|
// If virtual HUB is not selected, it's an error
|
||||||
@ -15017,6 +15251,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
a->Delay = GetParamInt(o, "DELAY");
|
a->Delay = GetParamInt(o, "DELAY");
|
||||||
a->Jitter = GetParamInt(o, "JITTER");
|
a->Jitter = GetParamInt(o, "JITTER");
|
||||||
a->Loss = GetParamInt(o, "LOSS");
|
a->Loss = GetParamInt(o, "LOSS");
|
||||||
|
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||||
|
|
||||||
// RPC call
|
// RPC call
|
||||||
ret = ScAddAccess(ps->Rpc, &t);
|
ret = ScAddAccess(ps->Rpc, &t);
|
||||||
@ -15178,6 +15413,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||||
|
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// If virtual HUB is not selected, it's an error
|
// If virtual HUB is not selected, it's an error
|
||||||
@ -15233,6 +15469,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
a->Delay = GetParamInt(o, "DELAY");
|
a->Delay = GetParamInt(o, "DELAY");
|
||||||
a->Jitter = GetParamInt(o, "JITTER");
|
a->Jitter = GetParamInt(o, "JITTER");
|
||||||
a->Loss = GetParamInt(o, "LOSS");
|
a->Loss = GetParamInt(o, "LOSS");
|
||||||
|
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||||
|
|
||||||
// RPC call
|
// RPC call
|
||||||
ret = ScAddAccess(ps->Rpc, &t);
|
ret = ScAddAccess(ps->Rpc, &t);
|
||||||
@ -18309,6 +18546,7 @@ UINT PsSecureNatStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
CtInsert(ct, _UU("NM_STATUS_DHCP"), tmp);
|
CtInsert(ct, _UU("NM_STATUS_DHCP"), tmp);
|
||||||
|
|
||||||
CtInsert(ct, _UU("SM_SNAT_IS_KERNEL"), t.IsKernelMode ? _UU("SEC_YES") : _UU("SEC_NO"));
|
CtInsert(ct, _UU("SM_SNAT_IS_KERNEL"), t.IsKernelMode ? _UU("SEC_YES") : _UU("SEC_NO"));
|
||||||
|
CtInsert(ct, _UU("SM_SNAT_IS_RAW"), t.IsRawIpMode ? _UU("SEC_YES") : _UU("SEC_NO"));
|
||||||
|
|
||||||
CtFree(ct, c);
|
CtFree(ct, c);
|
||||||
}
|
}
|
||||||
@ -23096,7 +23334,7 @@ UINT PsConnect(CONSOLE *c, char *host, UINT port, char *hub, char *adminhub, wch
|
|||||||
// Failure
|
// Failure
|
||||||
retcode = err;
|
retcode = err;
|
||||||
|
|
||||||
if (err == ERR_ACCESS_DENIED)
|
if (err == ERR_ACCESS_DENIED && c->ProgrammingMode == false)
|
||||||
{
|
{
|
||||||
char *pass;
|
char *pass;
|
||||||
// Password is incorrect
|
// Password is incorrect
|
||||||
@ -23402,6 +23640,7 @@ UINT VpnCmdProc(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
{"OUT", NULL, NULL, NULL, NULL},
|
{"OUT", NULL, NULL, NULL, NULL},
|
||||||
{"CMD", NULL, NULL, NULL, NULL},
|
{"CMD", NULL, NULL, NULL, NULL},
|
||||||
{"CSV", NULL, NULL, NULL, NULL},
|
{"CSV", NULL, NULL, NULL, NULL},
|
||||||
|
{"PROGRAMMING", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef OS_WIN32
|
#ifdef OS_WIN32
|
||||||
@ -23621,6 +23860,7 @@ UINT CommandMain(wchar_t *command_line)
|
|||||||
wchar_t *infile, *outfile;
|
wchar_t *infile, *outfile;
|
||||||
char *a_infile, *a_outfile;
|
char *a_infile, *a_outfile;
|
||||||
wchar_t *csvmode;
|
wchar_t *csvmode;
|
||||||
|
wchar_t *programming_mode;
|
||||||
CONSOLE *c;
|
CONSOLE *c;
|
||||||
|
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
@ -23664,6 +23904,13 @@ UINT CommandMain(wchar_t *command_line)
|
|||||||
c->ConsoleType = CONSOLE_CSV;
|
c->ConsoleType = CONSOLE_CSV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
programming_mode = ParseCommand(command_line, L"programming");
|
||||||
|
if (programming_mode != NULL)
|
||||||
|
{
|
||||||
|
Free(programming_mode);
|
||||||
|
c->ProgrammingMode = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (DispatchNextCmdEx(c, command_line, ">", cmd, sizeof(cmd) / sizeof(cmd[0]), NULL) == false)
|
if (DispatchNextCmdEx(c, command_line, ">", cmd, sizeof(cmd) / sizeof(cmd[0]), NULL) == false)
|
||||||
{
|
{
|
||||||
ret = ERR_INVALID_PARAMETER;
|
ret = ERR_INVALID_PARAMETER;
|
||||||
@ -23757,7 +24004,3 @@ LABEL_CLEANUP:
|
|||||||
|
|
||||||
#endif // OS_WIN32
|
#endif // OS_WIN32
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -181,13 +181,30 @@ struct TTC
|
|||||||
THREAD *Thread; // Thread
|
THREAD *Thread; // Thread
|
||||||
volatile bool Halt; // Halting flag
|
volatile bool Halt; // Halting flag
|
||||||
bool *Cancel; // Halting flag 2
|
bool *Cancel; // Halting flag 2
|
||||||
SOCK_EVENT *SockEvent; // Socket event
|
|
||||||
LIST *ItcSockList; // Client socket list
|
LIST *ItcSockList; // Client socket list
|
||||||
TT_RESULT Result; // Result
|
TT_RESULT Result; // Result
|
||||||
UINT ErrorCode; // Error code
|
UINT ErrorCode; // Error code
|
||||||
bool AbnormalTerminated; // Abnormal termination
|
bool AbnormalTerminated; // Abnormal termination
|
||||||
EVENT *StartEvent; // Start event
|
EVENT *StartEvent; // Start event
|
||||||
EVENT *InitedEvent; // Initialize completion notification event
|
EVENT *InitedEvent; // Initialize completion notification event
|
||||||
|
LIST *WorkerThreadList; // List of worker threads
|
||||||
|
|
||||||
|
UINT flag1, flag2;
|
||||||
|
|
||||||
|
UINT64 session_id;
|
||||||
|
UINT64 end_tick;
|
||||||
|
UINT64 start_tick;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Traffic test worker thread
|
||||||
|
struct TTC_WORKER
|
||||||
|
{
|
||||||
|
THREAD *WorkerThread;
|
||||||
|
TTC *Ttc;
|
||||||
|
LIST *SockList; // Client socket list
|
||||||
|
SOCK_EVENT *SockEvent; // Socket event
|
||||||
|
EVENT *StartEvent; // Start event
|
||||||
|
bool Ok; // The result
|
||||||
};
|
};
|
||||||
|
|
||||||
// Server side socket
|
// Server side socket
|
||||||
@ -202,7 +219,10 @@ struct TTS_SOCK
|
|||||||
UINT64 SessionId; // Session ID
|
UINT64 SessionId; // Session ID
|
||||||
bool NoMoreSendData; // Flag not to send more data
|
bool NoMoreSendData; // Flag not to send more data
|
||||||
UINT64 FirstRecvTick; // Time which the data has been received last
|
UINT64 FirstRecvTick; // Time which the data has been received last
|
||||||
|
UINT64 FirstSendTick; // Time which the data has been sent last
|
||||||
UINT64 Span; // Period
|
UINT64 Span; // Period
|
||||||
|
UINT64 GiveupSpan;
|
||||||
|
UINT64 LastCommTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Traffic test server
|
// Traffic test server
|
||||||
@ -213,15 +233,22 @@ struct TTS
|
|||||||
volatile bool Halt; // Halting flag
|
volatile bool Halt; // Halting flag
|
||||||
UINT Port; // Port number
|
UINT Port; // Port number
|
||||||
THREAD *Thread; // Thread
|
THREAD *Thread; // Thread
|
||||||
THREAD *WorkThread; // Worker thread
|
|
||||||
THREAD *IPv6AcceptThread; // IPv6 Accept thread
|
THREAD *IPv6AcceptThread; // IPv6 Accept thread
|
||||||
SOCK *ListenSocket; // Socket to wait
|
SOCK *ListenSocket; // Socket to wait
|
||||||
SOCK *ListenSocketV6; // Socket to wait (IPv6)
|
SOCK *ListenSocketV6; // Socket to wait (IPv6)
|
||||||
UINT ErrorCode; // Error code
|
UINT ErrorCode; // Error code
|
||||||
|
UINT IdSeed; // ID value
|
||||||
|
LIST *WorkerList; // Worker threads list
|
||||||
|
};
|
||||||
|
|
||||||
|
// Traffic test worker thread
|
||||||
|
struct TTS_WORKER
|
||||||
|
{
|
||||||
|
TTS *Tts; // TTS
|
||||||
|
THREAD *WorkThread; // Worker thread
|
||||||
SOCK_EVENT *SockEvent; // Socket event
|
SOCK_EVENT *SockEvent; // Socket event
|
||||||
LIST *TtsSockList; // Server socket list
|
LIST *TtsSockList; // Server socket list
|
||||||
bool NewSocketArrived; // New socket has arrived
|
bool NewSocketArrived; // New socket has arrived
|
||||||
UINT IdSeed; // ID value
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// VPN Tools context
|
// VPN Tools context
|
||||||
@ -673,7 +700,3 @@ UINT PsVpnAzureGetStatus(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
|||||||
#endif // COMMAND_H
|
#endif // COMMAND_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -1030,7 +1030,7 @@ void ConnectionSend(CONNECTION *c, UINT64 now)
|
|||||||
UINT size;
|
UINT size;
|
||||||
SESSION *s;
|
SESSION *s;
|
||||||
HUB *hub = NULL;
|
HUB *hub = NULL;
|
||||||
bool use_qos;
|
bool use_qos = false;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (c == NULL)
|
if (c == NULL)
|
||||||
{
|
{
|
||||||
@ -1038,11 +1038,11 @@ void ConnectionSend(CONNECTION *c, UINT64 now)
|
|||||||
}
|
}
|
||||||
|
|
||||||
s = c->Session;
|
s = c->Session;
|
||||||
use_qos = s->QoS;
|
|
||||||
|
|
||||||
if (s != NULL)
|
if (s != NULL)
|
||||||
{
|
{
|
||||||
hub = s->Hub;
|
hub = s->Hub;
|
||||||
|
use_qos = s->QoS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Protocol
|
// Protocol
|
||||||
@ -3137,10 +3137,7 @@ void ConnectionAccept(CONNECTION *c)
|
|||||||
|
|
||||||
// Start the SSL communication
|
// Start the SSL communication
|
||||||
Debug("StartSSL()\n");
|
Debug("StartSSL()\n");
|
||||||
if (c->Cedar->AcceptOnlyTls)
|
Copy(&s->SslAcceptSettings, &c->Cedar->SslAcceptSettings, sizeof(SSL_ACCEPT_SETTINGS));
|
||||||
{
|
|
||||||
s->AcceptOnlyTls = true;
|
|
||||||
}
|
|
||||||
if (StartSSL(s, x, k) == false)
|
if (StartSSL(s, x, k) == false)
|
||||||
{
|
{
|
||||||
// Failed
|
// Failed
|
||||||
@ -3672,6 +3669,3 @@ CONNECTION *NewClientConnectionEx(SESSION *s, char *client_str, UINT client_ver,
|
|||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -144,7 +144,7 @@ struct SECURE_SIGN
|
|||||||
char SecurePrivateKeyName[MAX_SECURE_DEVICE_FILE_LEN + 1]; // Secure device secret key name
|
char SecurePrivateKeyName[MAX_SECURE_DEVICE_FILE_LEN + 1]; // Secure device secret key name
|
||||||
X *ClientCert; // Client certificate
|
X *ClientCert; // Client certificate
|
||||||
UCHAR Random[SHA1_SIZE]; // Random value for signature
|
UCHAR Random[SHA1_SIZE]; // Random value for signature
|
||||||
UCHAR Signature[128]; // Signed data
|
UCHAR Signature[4096 / 8]; // Signed data
|
||||||
UINT UseSecureDeviceId;
|
UINT UseSecureDeviceId;
|
||||||
UINT BitmapId; // Bitmap ID
|
UINT BitmapId; // Bitmap ID
|
||||||
};
|
};
|
||||||
@ -372,7 +372,3 @@ UINT GetMachineRand();
|
|||||||
|
|
||||||
|
|
||||||
#endif // CONNECTION_H
|
#endif // CONNECTION_H
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -769,6 +769,18 @@ bool DispatchNextCmdEx(CONSOLE *c, wchar_t *exec_command, char *prompt, CMD cmd[
|
|||||||
// Show the prompt
|
// Show the prompt
|
||||||
RETRY:
|
RETRY:
|
||||||
tmp = CopyStrToUni(prompt);
|
tmp = CopyStrToUni(prompt);
|
||||||
|
|
||||||
|
if (c->ProgrammingMode)
|
||||||
|
{
|
||||||
|
wchar_t tmp2[MAX_PATH];
|
||||||
|
|
||||||
|
UniFormat(tmp2, sizeof(tmp2), L"[PROMPT:%u:%s]\r\n", c->RetCode, tmp);
|
||||||
|
|
||||||
|
Free(tmp);
|
||||||
|
|
||||||
|
tmp = CopyUniStr(tmp2);
|
||||||
|
}
|
||||||
|
|
||||||
str = c->ReadLine(c, tmp, false);
|
str = c->ReadLine(c, tmp, false);
|
||||||
Free(tmp);
|
Free(tmp);
|
||||||
|
|
||||||
@ -1430,6 +1442,14 @@ EVAL_VALUE:
|
|||||||
Free(str);
|
Free(str);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (c->ProgrammingMode)
|
||||||
|
{
|
||||||
|
// In the programming mode, return the error immediately.
|
||||||
|
ok = false;
|
||||||
|
Free(name);
|
||||||
|
Free(str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Request to re-enter
|
// Request to re-enter
|
||||||
@ -1458,7 +1478,11 @@ EVAL_VALUE:
|
|||||||
wchar_t *tmp;
|
wchar_t *tmp;
|
||||||
SHOW_PROMPT:
|
SHOW_PROMPT:
|
||||||
// Prompt because it is a mandatory parameter
|
// Prompt because it is a mandatory parameter
|
||||||
|
tmp = NULL;
|
||||||
|
if (c->ProgrammingMode == false)
|
||||||
|
{
|
||||||
tmp = p->PromptProc(c, p->PromptProcParam);
|
tmp = p->PromptProc(c, p->PromptProcParam);
|
||||||
|
}
|
||||||
if (tmp == NULL)
|
if (tmp == NULL)
|
||||||
{
|
{
|
||||||
// User canceled
|
// User canceled
|
||||||
@ -2213,6 +2237,7 @@ CONSOLE *NewLocalConsole(wchar_t *infile, wchar_t *outfile)
|
|||||||
c->ReadPassword = ConsoleLocalReadPassword;
|
c->ReadPassword = ConsoleLocalReadPassword;
|
||||||
c->Write = ConsoleLocalWrite;
|
c->Write = ConsoleLocalWrite;
|
||||||
c->GetWidth = ConsoleLocalGetWidth;
|
c->GetWidth = ConsoleLocalGetWidth;
|
||||||
|
c->OutputLock = NewLock();
|
||||||
|
|
||||||
if (UniIsEmptyStr(infile) == false)
|
if (UniIsEmptyStr(infile) == false)
|
||||||
{
|
{
|
||||||
@ -2324,6 +2349,8 @@ void ConsoleLocalFree(CONSOLE *c)
|
|||||||
Free(p);
|
Free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeleteLock(c->OutputLock);
|
||||||
|
|
||||||
// Memory release
|
// Memory release
|
||||||
Free(c);
|
Free(c);
|
||||||
}
|
}
|
||||||
@ -2534,7 +2561,3 @@ void ConsoleWriteOutFile(CONSOLE *c, wchar_t *str, bool add_last_crlf)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -160,6 +160,8 @@ struct CONSOLE
|
|||||||
char *(*ReadPassword)(CONSOLE *c, wchar_t *prompt); // Function to read the password
|
char *(*ReadPassword)(CONSOLE *c, wchar_t *prompt); // Function to read the password
|
||||||
bool (*Write)(CONSOLE *c, wchar_t *str); // Function to write a string
|
bool (*Write)(CONSOLE *c, wchar_t *str); // Function to write a string
|
||||||
UINT (*GetWidth)(CONSOLE *c); // Get the width of the screen
|
UINT (*GetWidth)(CONSOLE *c); // Get the width of the screen
|
||||||
|
bool ProgrammingMode; // Programming Mode
|
||||||
|
LOCK *OutputLock; // Output Lock
|
||||||
};
|
};
|
||||||
|
|
||||||
// Local console parameters
|
// Local console parameters
|
||||||
@ -246,7 +248,3 @@ UINT ConsoleLocalGetWidth(CONSOLE *c);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// SoftEther VPN Source Code
|
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||||
// Cedar Communication Module
|
// Cedar Communication Module
|
||||||
//
|
//
|
||||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2012-2014 Daiyuu Nobori.
|
// Copyright (c) Daiyuu Nobori.
|
||||||
// Copyright (c) 2012-2014 SoftEther VPN Project, University of Tsukuba, Japan.
|
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||||
// Copyright (c) 2012-2014 SoftEther Corporation.
|
// Copyright (c) SoftEther Corporation.
|
||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
//
|
//
|
||||||
// http://www.softether.org/
|
// http://www.softether.org/
|
||||||
//
|
//
|
||||||
// Author: Daiyuu Nobori
|
// Author: Daiyuu Nobori, Ph.D.
|
||||||
// Comments: Tetsuo Sugiyama, Ph.D.
|
// Comments: Tetsuo Sugiyama, Ph.D.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
@ -624,8 +624,9 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
|
|||||||
PackAddInt(req, "lasterror_ipv4", c->Err_IPv4_GetMyIp);
|
PackAddInt(req, "lasterror_ipv4", c->Err_IPv4_GetMyIp);
|
||||||
PackAddInt(req, "lasterror_ipv6", c->Err_IPv6_GetMyIp);
|
PackAddInt(req, "lasterror_ipv6", c->Err_IPv6_GetMyIp);
|
||||||
PackAddBool(req, "use_azure", use_azure);
|
PackAddBool(req, "use_azure", use_azure);
|
||||||
PackAddStr(req, "product_str", CEDAR_PRODUCT_STR);
|
PackAddStr(req, "product_str", "SoftEther OSS");
|
||||||
PackAddInt(req, "ddns_protocol_version", DDNS_VERSION);
|
PackAddInt(req, "ddns_protocol_version", DDNS_VERSION);
|
||||||
|
PackAddInt(req, "ddns_oss", 1);
|
||||||
|
|
||||||
|
|
||||||
if (use_azure)
|
if (use_azure)
|
||||||
@ -670,9 +671,12 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
{
|
{
|
||||||
Debug("WpcCall: %s\n", url3);
|
Debug("WpcCall: %s\n", url3);
|
||||||
ret = WpcCallEx(url3, &t, DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, "register", req,
|
ret = WpcCallEx2(url3, &t, DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, "register", req,
|
||||||
NULL, NULL, ((cert_hash != NULL && cert_hash->Size == SHA1_SIZE) ? cert_hash->Buf : NULL), NULL, DDNS_RPC_MAX_RECV_SIZE,
|
NULL, NULL, ((cert_hash != NULL && ((cert_hash->Size % SHA1_SIZE) == 0)) ? cert_hash->Buf : NULL),
|
||||||
add_header_name, add_header_value);
|
(cert_hash != NULL ? cert_hash->Size / SHA1_SIZE : 0),
|
||||||
|
NULL, DDNS_RPC_MAX_RECV_SIZE,
|
||||||
|
add_header_name, add_header_value,
|
||||||
|
DDNS_SNI_VER_STRING);
|
||||||
Debug("WpcCall Ret: %u\n", ret);
|
Debug("WpcCall Ret: %u\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -874,8 +878,11 @@ UINT DCGetMyIpMain(DDNS_CLIENT *c, bool ipv6, char *dst, UINT dst_size, bool use
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
recv = HttpRequest(&data, (ipv6 ? NULL : &c->InternetSetting), DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, &ret, false, NULL, NULL,
|
StrCpy(data.SniString, sizeof(data.SniString), DDNS_SNI_VER_STRING);
|
||||||
NULL, ((cert_hash != NULL && cert_hash->Size == SHA1_SIZE) ? cert_hash->Buf : NULL));
|
|
||||||
|
recv = HttpRequestEx3(&data, (ipv6 ? NULL : &c->InternetSetting), DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, &ret, false, NULL, NULL,
|
||||||
|
NULL, ((cert_hash != NULL && (cert_hash->Size % SHA1_SIZE) == 0) ? cert_hash->Buf : NULL),
|
||||||
|
(cert_hash != NULL ? cert_hash->Size / SHA1_SIZE : 0), NULL, 0, NULL, NULL);
|
||||||
|
|
||||||
FreeBuf(cert_hash);
|
FreeBuf(cert_hash);
|
||||||
|
|
||||||
@ -1040,7 +1047,3 @@ void DCGenNewKey(UCHAR *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Developed by SoftEther VPN Project at University of Tsukuba in Japan.
|
|
||||||
// Department of Computer Science has dozens of overly-enthusiastic geeks.
|
|
||||||
// Join us: http://www.tsukuba.ac.jp/english/admission/
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user