1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2026-09-19 18:01:25 +03:00

Compare commits

..

9 Commits

Author SHA1 Message Date
Kitano-Kaneko, Naoki a9a19d88ab Merge 06e79fd75d into 12ed43f6eb 2025-05-23 15:34:57 +09:00
puripuri2100 06e79fd75d replace да|нет to yes|no 2023-09-27 20:03:43 +09:00
puripuri2100 d30949038f Swap comment for ConnectionList command and comment for ConnectionGet command in strtable_ru.stb file 2023-09-27 20:01:53 +09:00
puripuri2100 c621a8e74d fix [порт] to [port] 2023-09-27 00:12:50 +09:00
puripuri2100 1b0aa5e434 fix 2023-09-26 23:26:57 +09:00
puripuri2100 51898b80a2 fix comment: ConnectionGet 2023-09-26 23:25:55 +09:00
puripuri2100 ed282ad977 change comment: VPN工具 to VPN Tools 2023-09-26 23:24:07 +09:00
puripuri2100 7e30a8e52a fixed VpnAzureSetStatus to VpnAzureSetEnable 2023-09-26 22:55:22 +09:00
puripuri2100 a09446c1f3 fix [nome] to [name] 2023-09-26 22:51:28 +09:00
45 changed files with 531 additions and 9525 deletions
+2 -2
View File
@@ -4,14 +4,14 @@ FreeBSD_task:
SSL: openssl SSL: openssl
OPENSSL_ROOT_DIR: /usr/local OPENSSL_ROOT_DIR: /usr/local
env: env:
SSL: openssl36 SSL: openssl32
OPENSSL_ROOT_DIR: /usr/local OPENSSL_ROOT_DIR: /usr/local
env: env:
# base openssl # base openssl
SSL: SSL:
matrix: matrix:
freebsd_instance: freebsd_instance:
image_family: freebsd-14-3 image_family: freebsd-14-2
prepare_script: prepare_script:
- pkg install -y pkgconf cmake git libsodium cpu_features $SSL - pkg install -y pkgconf cmake git libsodium cpu_features $SSL
- git submodule update --init --recursive - git submodule update --init --recursive
@@ -8,8 +8,6 @@ body:
Thanks for taking the time to fill out this bug report! Thanks for taking the time to fill out this bug report!
We provide a template which is specifically made for bug reports, to be sure that the report includes enough details to be helpful. We provide a template which is specifically made for bug reports, to be sure that the report includes enough details to be helpful.
**⚠️ Antivirus False Positive?** If you're reporting an antivirus detection issue, please see [ANTIVIRUS.md](https://github.com/SoftEtherVPN/SoftEtherVPN/blob/master/ANTIVIRUS.md) first. Antivirus false positives should be reported to the antivirus vendor, not as bugs in SoftEther VPN.
- type: checkboxes - type: checkboxes
attributes: attributes:
label: Are you using SoftEther VPN 5.x? label: Are you using SoftEther VPN 5.x?
-4
View File
@@ -1,8 +1,4 @@
contact_links: contact_links:
- name: Antivirus False Positive Detection
about: If antivirus software is flagging SoftEther VPN as malicious, this is a false positive. See our documentation for solutions and how to report to antivirus vendors.
url: https://github.com/SoftEtherVPN/SoftEtherVPN/blob/master/ANTIVIRUS.md
- name: Are you using SoftEther VPN 4.x? - name: Are you using SoftEther VPN 4.x?
about: This repository is for SoftEther VPN 5.x Developer Edition, developed independently from SoftEther VPN 4.x. Visit vpnusers.com if you would like to report issues or ask questions about version 4.x! about: This repository is for SoftEther VPN 5.x Developer Edition, developed independently from SoftEther VPN 4.x. Visit vpnusers.com if you would like to report issues or ask questions about version 4.x!
url: https://www.vpnusers.com/ url: https://www.vpnusers.com/
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
build_and_test: build_and_test:
strategy: strategy:
matrix: matrix:
os: [macos-26, macos-15, macos-14] os: [macos-15, macos-14, macos-13]
name: ${{ matrix.os }} name: ${{ matrix.os }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
-2
View File
@@ -210,5 +210,3 @@ developer_tools/stbchecker/**/*.binlog
developer_tools/stbchecker/**/*.nvuser developer_tools/stbchecker/**/*.nvuser
developer_tools/stbchecker/**/.mfractor/ developer_tools/stbchecker/**/.mfractor/
/vcpkg_installed /vcpkg_installed
_codeql_build_dir/
_codeql_detected_source_root
-338
View File
@@ -1,338 +0,0 @@
# Antivirus False Positive Detection
## Overview
Some antivirus software, including Microsoft Defender, may incorrectly flag SoftEther VPN executables as malicious software. This is a **false positive** detection. SoftEther VPN is legitimate, open-source software that has been developed and maintained since 2013 by researchers at the University of Tsukuba, Japan.
## Why Does This Happen?
Antivirus software uses heuristic analysis to detect potentially malicious behavior. VPN software like SoftEther VPN performs operations that can appear suspicious to antivirus programs, including:
- **Network tunneling and traffic interception**: VPN software creates virtual network adapters and intercepts network traffic to secure it
- **Low-level network operations**: Packet filtering, protocol handling, and kernel-mode operations
- **Service installation**: VPN clients install system services that run with elevated privileges
- **Registry modifications**: Required for Windows integration and auto-start functionality
- **Dynamic code execution**: Network protocol implementations may use techniques that appear similar to malicious software
These are **normal and necessary operations** for any VPN software, but they can trigger heuristic-based detection algorithms.
## Microsoft Defender Specific Issue
### Affected Components
Microsoft Defender may flag the following SoftEther VPN 5.x components as `Trojan:Win32/KepavII!rfn`:
- `vpnclient.exe` - VPN Client executable
- `vpnserver.exe` - VPN Server executable
- `vpnbridge.exe` - VPN Bridge executable
- `vpncmd.exe` - VPN Command-line utility
- Start menu shortcuts
- Registry entries
- Windows services (`SEVPNCLIENTDEV`, `SEVPNSERVERDEV`, etc.)
### Detection Details
```
Detected: Trojan:Win32/KepavII!rfn
Status: Quarantined
Description: "This program is dangerous and executes commands from an attacker."
```
**This is a false positive.** The detection is based on behavioral heuristics, not actual malicious code.
## Solutions and Workarounds
### Option 1: Add Exclusions (Recommended for Users)
The recommended approach is to add SoftEther VPN directories to Microsoft Defender's exclusion list:
#### Step-by-Step Instructions:
1. **Open Windows Security**
- Press `Windows Key + I` to open Settings
- Navigate to **Privacy & Security****Windows Security**
- Click **Virus & threat protection**
2. **Access Exclusion Settings**
- Scroll down to **Virus & threat protection settings**
- Click **Manage settings**
- Scroll down to **Exclusions**
- Click **Add or remove exclusions**
3. **Add SoftEther VPN Directories**
Click **Add an exclusion****Folder** and add these paths:
- `C:\Program Files\SoftEther VPN Client`
- `C:\Program Files\SoftEther VPN Client Developer Edition`
- `C:\Program Files\SoftEther VPN Server`
- `C:\Program Files\SoftEther VPN Server Manager`
- `C:\Program Files\SoftEther VPN Server Manager Developer Edition`
- `C:\Program Files\SoftEther VPN Server Developer Edition`
- `C:\ProgramData\SoftEther VPN Client`
- `C:\ProgramData\SoftEther VPN Server`
**Note**: Add only the directories that correspond to the SoftEther VPN components you have installed.
4. **Restore Quarantined Files** (if needed)
- Go back to **Virus & threat protection**
- Click **Protection history**
- Find the quarantined SoftEther VPN files
- Click **Actions****Restore**
5. **Reinstall if Necessary**
- If files were deleted, you may need to reinstall SoftEther VPN
- The exclusions will prevent future detections
### Option 2: Report False Positive to Microsoft
Help improve Microsoft Defender by reporting the false positive:
1. **Submit to Microsoft Defender Security Intelligence**
- Visit: https://www.microsoft.com/en-us/wdsi/filesubmission
- Select **File** submission type
- Choose **Software developer** as your role
- Submit the falsely detected SoftEther VPN executable files
- Provide details: "False positive detection of SoftEther VPN, open-source VPN software"
2. **Include Information**
- Product Name: SoftEther VPN
- Vendor: SoftEther Project at University of Tsukuba
- Official Website: https://www.softether.org/
- GitHub Repository: https://github.com/SoftEtherVPN/SoftEtherVPN
- License: Apache License 2.0
Microsoft typically reviews submissions within a few days and updates their definitions if confirmed as a false positive.
### Option 3: Use Alternative Antivirus Software
If Microsoft Defender continues to cause issues:
1. Consider using alternative antivirus software that doesn't flag SoftEther VPN
2. Some users report fewer false positives with third-party antivirus solutions
3. Ensure any alternative antivirus is from a reputable vendor
## For IT Administrators
### Group Policy Configuration
To deploy exclusions across an organization using Group Policy:
1. **Open Group Policy Management Console**
```
gpmc.msc
```
2. **Navigate to Windows Defender Antivirus Settings**
```
Computer Configuration → Policies → Administrative Templates
→ Windows Components → Microsoft Defender Antivirus → Exclusions
```
3. **Configure Path Exclusions**
- Enable **Path Exclusions**
- Add the SoftEther VPN installation directories
4. **Update Group Policy**
```powershell
gpupdate /force
```
### PowerShell Exclusion Script
For automated deployment, use this PowerShell script (requires Administrator privileges):
```powershell
# Add Windows Defender exclusions for SoftEther VPN
# Requires Administrator privileges
$exclusionPaths = @(
"C:\Program Files\SoftEther VPN Client",
"C:\Program Files\SoftEther VPN Client Developer Edition",
"C:\Program Files\SoftEther VPN Server",
"C:\Program Files\SoftEther VPN Server Manager",
"C:\Program Files\SoftEther VPN Server Manager Developer Edition",
"C:\Program Files\SoftEther VPN Server Developer Edition",
"C:\ProgramData\SoftEther VPN Client",
"C:\ProgramData\SoftEther VPN Server"
)
# Check if running as Administrator
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Error "This script requires Administrator privileges. Please run PowerShell as Administrator."
exit 1
}
# Check if Windows Defender module is available
if (-not (Get-Module -ListAvailable -Name Defender)) {
Write-Error "Windows Defender PowerShell module is not available on this system."
exit 1
}
$successCount = 0
$errorCount = 0
foreach ($path in $exclusionPaths) {
if (Test-Path $path) {
try {
Add-MpPreference -ExclusionPath $path -ErrorAction Stop
Write-Host "✓ Added exclusion: $path" -ForegroundColor Green
$successCount++
}
catch {
Write-Warning "✗ Failed to add exclusion for: $path"
Write-Warning " Error: $($_.Exception.Message)"
$errorCount++
}
}
else {
Write-Host "- Skipped (not found): $path" -ForegroundColor Gray
}
}
Write-Host "`nSummary:" -ForegroundColor Cyan
Write-Host " Successfully added: $successCount exclusion(s)" -ForegroundColor Green
if ($errorCount -gt 0) {
Write-Host " Failed: $errorCount exclusion(s)" -ForegroundColor Red
}
Write-Host "`nSoftEther VPN exclusions configured." -ForegroundColor Cyan
```
Save as `Add-SoftEtherVPN-Exclusions.ps1` and run as Administrator.
## Verification of Software Authenticity
### Open Source Verification
SoftEther VPN is **fully open source** and can be verified:
1. **Source Code Review**
- Complete source code: https://github.com/SoftEtherVPN/SoftEtherVPN
- All commits are publicly visible
- Community peer-reviewed code
2. **Build from Source**
- You can compile SoftEther VPN yourself from source
- See: [BUILD_WINDOWS.md](src/BUILD_WINDOWS.md) and [BUILD_UNIX.md](src/BUILD_UNIX.md)
- Self-compiled builds may have fewer false positive issues
3. **Community Trust**
- Active development since 2013
- Over 11,000+ GitHub stars
- Used by organizations and individuals worldwide
- Peer-reviewed academic research project
### Official Distributions
Always download SoftEther VPN from official sources:
- **Official Website**: https://www.softether.org/
- **GitHub Releases**: https://github.com/SoftEtherVPN/SoftEtherVPN/releases
- **Official Download Site**: https://www.softether-download.com/
**Warning**: Do not download SoftEther VPN from third-party websites or unofficial sources.
## Technical Background
### Why VPN Software Triggers Detection
VPN software implements functionality that overlaps with techniques used by some malware:
1. **Kernel-mode drivers**: Required for creating virtual network adapters
2. **Network traffic interception**: Core VPN functionality to encrypt traffic
3. **Process injection**: Some VPN implementations inject into other processes
4. **Privilege escalation**: VPN services need administrative rights
5. **Persistent system changes**: Auto-start configuration, service installation
These are **legitimate techniques** when used by trusted VPN software.
### False Positive Rate
False positives are common in the VPN and security software industry. Other legitimate VPN and security tools have faced similar issues:
- OpenVPN has been flagged by various antivirus vendors
- WireGuard implementations have triggered false positives
- Many security research tools face similar challenges
## Code Signing Status
**Note**: The official SoftEther VPN releases may not include code signing certificates. Code signing certificates require:
- Annual fees (typically $300-500+ per year)
- Corporate entity for Extended Validation (EV) certificates
- Hardware security modules (HSM) for EV certificate storage
As an open-source project with limited funding, SoftEther VPN prioritizes development over expensive code signing infrastructure. However, this doesn't make the software any less safe - all source code is publicly auditable.
Users who require signed binaries can:
1. Build from source and sign with their own certificates
2. Work with their organization to sign the binaries
3. Use alternative verification methods (source code review, checksums, etc.)
## Best Practices
1. **Keep Antivirus Updated**: Ensure Microsoft Defender definitions are current
2. **Monitor Protection History**: Regularly check if SoftEther VPN is being flagged
3. **Subscribe to Updates**: Follow SoftEther VPN releases for security updates
4. **Report False Positives**: Help the community by reporting detections to Microsoft
5. **Use Official Builds**: Only download from official sources
## Additional Resources
- **SoftEther VPN Official Website**: https://www.softether.org/
- **GitHub Repository**: https://github.com/SoftEtherVPN/SoftEtherVPN
- **Security Policy**: [SECURITY.md](SECURITY.md)
- **Microsoft Defender Submission Portal**: https://www.microsoft.com/en-us/wdsi/filesubmission
- **Build Instructions**: [BUILD_WINDOWS.md](src/BUILD_WINDOWS.md)
## Frequently Asked Questions
### Q: Is SoftEther VPN safe to use?
**A**: Yes. SoftEther VPN is legitimate, open-source software developed by researchers at the University of Tsukuba, Japan. The detection is a false positive. All source code is publicly available for review at https://github.com/SoftEtherVPN/SoftEtherVPN
### Q: Why don't you just fix the code to not trigger antivirus?
**A**: The detection is based on legitimate VPN operations, not malicious code. Changing how VPN functionality works to avoid heuristic detection would compromise the software's core purpose. The correct solution is to report false positives to antivirus vendors and add exclusions.
### Q: Will adding exclusions make my computer less secure?
**A**: Exclusions for trusted software from official sources don't significantly reduce security. Only add exclusions for software you trust and have downloaded from official sources. SoftEther VPN is open-source and can be verified.
### Q: Can I use SoftEther VPN without adding exclusions?
**A**: Not reliably with Microsoft Defender. The antivirus will quarantine executables and prevent the VPN from functioning. Exclusions are necessary unless Microsoft updates their detection definitions.
### Q: How do I know my downloaded file is authentic?
**A**:
1. Only download from https://github.com/SoftEtherVPN/SoftEtherVPN/releases or https://www.softether.org/
2. Verify the file hash/checksum if provided
3. Review the source code on GitHub
4. Build from source yourself for maximum assurance
### Q: Is this issue specific to SoftEther VPN?
**A**: No. Many VPN applications and security tools face false positive detections. OpenVPN, WireGuard implementations, and other network security tools have similar issues with various antivirus vendors.
### Q: Will this be fixed in a future version?
**A**: The SoftEther VPN project continues to work on this issue. However, heuristic-based detection is challenging to avoid without compromising functionality. The best approach is to:
1. Report false positives to Microsoft
2. Use exclusions as needed
3. Build from source if your organization requires it
## Contributing
If you have additional solutions or workarounds that have worked for you, please contribute to this documentation:
1. Fork the repository: https://github.com/SoftEtherVPN/SoftEtherVPN
2. Edit this file: `ANTIVIRUS.md`
3. Submit a pull request with your improvements
---
**Applies to**: SoftEther VPN 5.x (Developer Edition)
**Related Issue**: False positive detection by Microsoft Defender as Trojan:Win32/KepavII!rfn
-72
View File
@@ -136,78 +136,6 @@
"type": "STRING" "type": "STRING"
} }
] ]
},
{
"name": "arm64-on-x64",
"description": "Cross compile Windows ARM64 on x64",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": ["msvc_arm64_x64"],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"variables": [
{
"name": "BUILD_NUMBER",
"value": "${env.BuildNumber}",
"type": "STRING"
},
{
"name": "CMAKE_SYSTEM_NAME",
"value": "Windows",
"type": "STRING"
},
{
"name": "CMAKE_SYSTEM_PROCESSOR",
"value": "arm64",
"type": "STRING"
},
{
"name": "CMAKE_C_COMPILER",
"value": "${env.VCINSTALLDIR}Tools/Llvm/bin/clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "${env.VCINSTALLDIR}Tools/Llvm/bin/clang-cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_C_COMPILER_TARGET",
"value": "arm64-windows-msvc",
"type": "STRING"
},
{
"name": "CMAKE_CXX_COMPILER_TARGET",
"value": "arm64-windows-msvc",
"type": "STRING"
},
{
"name": "CMAKE_EXE_LINKER_FLAGS",
"value": "/machine:ARM64",
"type": "STRING"
},
{
"name": "VCPKG_TARGET_TRIPLET",
"value": "arm64-windows-static",
"type": "STRING"
},
{
"name": "CMAKE_STATIC_LINKER_FLAGS",
"value": "/machine:ARM64",
"type": "STRING"
},
{
"name": "CMAKE_SHARED_LINKER_FLAGS",
"value": "/machine:ARM64",
"type": "STRING"
},
{
"name": "IS_CROSS_COMPILATION",
"value": "arm64-on-x64",
"type": "STRING"
}
]
} }
] ]
} }
-3
View File
@@ -37,18 +37,15 @@ COPY --from=builder /usr/local/src/SoftEtherVPN/build/libcedar.so /usr/local/src
FROM base AS vpnserver FROM base AS vpnserver
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnserver ./ COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnserver ./
RUN ./vpnserver --help
EXPOSE 443/tcp 992/tcp 1194/tcp 1194/udp 5555/tcp 500/udp 4500/udp EXPOSE 443/tcp 992/tcp 1194/tcp 1194/udp 5555/tcp 500/udp 4500/udp
CMD ["/usr/local/bin/vpnserver", "execsvc"] CMD ["/usr/local/bin/vpnserver", "execsvc"]
FROM base AS vpnclient FROM base AS vpnclient
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnclient ./ COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnclient ./
RUN ./vpnclient --help
CMD ["/usr/local/bin/vpnclient", "execsvc"] CMD ["/usr/local/bin/vpnclient", "execsvc"]
FROM base AS vpnbridge FROM base AS vpnbridge
COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnbridge ./ COPY --from=builder /usr/local/src/SoftEtherVPN/build/vpnbridge ./
RUN ./vpnbridge --help
CMD ["/usr/local/bin/vpnbridge", "execsvc"] CMD ["/usr/local/bin/vpnbridge", "execsvc"]
-5
View File
@@ -14,7 +14,6 @@
* [For Windows](#for-windows) * [For Windows](#for-windows)
* [From binary installers (stable channel)](#from-binary-installers-stable-channel) * [From binary installers (stable channel)](#from-binary-installers-stable-channel)
* [Build from Source code](#build-from-source-code) * [Build from Source code](#build-from-source-code)
- [Antivirus False Positive Detection](ANTIVIRUS.md)
- [About HTML5-based Modern Admin Console and JSON-RPC API Suite](#about-html5-based-modern-admin-console-and-json-rpc-api-suite) - [About HTML5-based Modern Admin Console and JSON-RPC API Suite](#about-html5-based-modern-admin-console-and-json-rpc-api-suite)
* [Built-in SoftEther VPN Server HTML5 Ajax-based Web Administration Console](#built-in-softether-vpn-server-html5-ajax-based-web-administration-console) * [Built-in SoftEther VPN Server HTML5 Ajax-based Web Administration Console](#built-in-softether-vpn-server-html5-ajax-based-web-administration-console)
* [Built-in SoftEther Server VPN JSON-RPC API Suite](#built-in-softether-server-vpn-json-rpc-api-suite) * [Built-in SoftEther Server VPN JSON-RPC API Suite](#built-in-softether-server-vpn-json-rpc-api-suite)
@@ -207,8 +206,6 @@ Also SoftEther VPN [Stable Edition](https://www.freshports.org/security/softethe
[Nightly builds](https://github.com/SoftEtherVPN/SoftEtherVPN/actions/workflows/windows.yml) [Nightly builds](https://github.com/SoftEtherVPN/SoftEtherVPN/actions/workflows/windows.yml)
(choose appropriate platform, then find binaries or installers as artifacts) (choose appropriate platform, then find binaries or installers as artifacts)
**⚠️ Important for Windows Users**: Some antivirus software (including Microsoft Defender) may incorrectly flag SoftEther VPN as malicious. This is a **false positive**. See [ANTIVIRUS.md](ANTIVIRUS.md) for detailed information and solutions.
## From binary installers (stable channel) ## From binary installers (stable channel)
Those can be found under https://www.softether-download.com/ Those can be found under https://www.softether-download.com/
@@ -293,8 +290,6 @@ We hope that you can reach one of the above URLs at least!
Your contribution to SoftEther VPN Project is much appreciated. Your contribution to SoftEther VPN Project is much appreciated.
Please send patches to us through GitHub. Please send patches to us through GitHub.
Here you find how to submit new translation: [TRANSLATION_GUIDE.md](TRANSLATION_GUIDE.md)
# DEAR SECURITY EXPERTS # DEAR SECURITY EXPERTS
-11
View File
@@ -13,14 +13,3 @@ currently being supported with security updates.
## Reporting a Vulnerability ## Reporting a Vulnerability
Please use [github security reporting](https://github.com/SoftEtherVPN/SoftEtherVPN/security/advisories/new) Please use [github security reporting](https://github.com/SoftEtherVPN/SoftEtherVPN/security/advisories/new)
## Antivirus False Positive Detection
Some antivirus software may incorrectly flag SoftEther VPN executables as malicious. This is a **false positive** and not a security vulnerability.
**If you encounter antivirus warnings:**
- See [ANTIVIRUS.md](ANTIVIRUS.md) for detailed information and solutions
- Report false positives to your antivirus vendor
- Verify downloads are from official sources only
**SoftEther VPN is safe**: All source code is publicly available and can be reviewed at https://github.com/SoftEtherVPN/SoftEtherVPN
Binary file not shown.
-116
View File
@@ -1,116 +0,0 @@
================================================================================
SoftEther VPN - Windows Installation Notes
================================================================================
Thank you for installing SoftEther VPN!
SoftEther VPN is legitimate, open-source VPN software developed by researchers
at the University of Tsukuba, Japan. It has been in active development since
2013 and is used by organizations and individuals worldwide.
================================================================================
IMPORTANT: Antivirus False Positive Warning
================================================================================
Some antivirus software (including Microsoft Defender) may incorrectly flag
SoftEther VPN executables as malicious. This is a FALSE POSITIVE detection.
WHY THIS HAPPENS:
-----------------
VPN software performs operations that can appear suspicious to antivirus
programs:
- Network tunneling and traffic interception
- Low-level network operations
- Service installation with elevated privileges
- Registry modifications for Windows integration
These are NORMAL and NECESSARY operations for any VPN software.
IF MICROSOFT DEFENDER QUARANTINES SOFTETHER VPN:
------------------------------------------------
1. Add Exclusions to Microsoft Defender:
a) Open Windows Security (Windows Key + I -> Privacy & Security ->
Windows Security -> Virus & threat protection)
b) Click "Manage settings" under Virus & threat protection settings
c) Scroll down to "Exclusions" and click "Add or remove exclusions"
d) Click "Add an exclusion" -> "Folder" and add:
C:\Program Files\SoftEther VPN Client
C:\Program Files\SoftEther VPN Client Developer Edition
C:\Program Files\SoftEther VPN Server
C:\Program Files\SoftEther VPN Server Developer Edition
(Add only the folders that exist for your installation)
2. Restore Quarantined Files:
a) Go to "Virus & threat protection" -> "Protection history"
b) Find quarantined SoftEther VPN files
c) Click "Actions" -> "Restore"
3. Reinstall if Necessary:
If files were deleted, reinstall SoftEther VPN. The exclusions will
prevent future detections.
REPORT FALSE POSITIVE TO MICROSOFT:
------------------------------------
Help improve Microsoft Defender by reporting the false positive:
Visit: https://www.microsoft.com/en-us/wdsi/filesubmission
Submit the flagged file and indicate it's a false positive detection
of SoftEther VPN, open-source software from the University of Tsukuba.
MORE INFORMATION:
-----------------
For detailed documentation about this issue and additional solutions, see:
https://github.com/SoftEtherVPN/SoftEtherVPN/blob/master/ANTIVIRUS.md
VERIFY AUTHENTICITY:
--------------------
SoftEther VPN is open source. You can verify the software by:
- Reviewing source code: https://github.com/SoftEtherVPN/SoftEtherVPN
- Official website: https://www.softether.org/
- Only download from official sources
WARNING: Do not download SoftEther VPN from third-party websites.
================================================================================
Getting Started
================================================================================
After adding antivirus exclusions (if needed):
1. Launch "SoftEther VPN Client Manager" from the Start Menu
2. Configure your VPN connection settings
3. Connect to your VPN server
For detailed documentation, visit: https://www.softether.org/
================================================================================
Support
================================================================================
Official Website: https://www.softether.org/
GitHub Repository: https://github.com/SoftEtherVPN/SoftEtherVPN
Security Issues: https://github.com/SoftEtherVPN/SoftEtherVPN/security
================================================================================
SoftEther VPN is licensed under the Apache License 2.0
Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan
Thank you for using SoftEther VPN!
================================================================================
+12 -45
View File
@@ -1,4 +1,4 @@
if(UNIX) if(UNIX)
# Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin". # Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin".
# This is required because symlinks use the folder they are in as working directory. # This is required because symlinks use the folder they are in as working directory.
# #
@@ -59,12 +59,6 @@ add_definitions(-D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_S
include_directories(.) include_directories(.)
if(WIN32) if(WIN32)
if(IS_CROSS_COMPILATION MATCHES "arm64-on-x64")
set(CMAKE_SYSTEM_PROCESSOR "arm64")
else()
message("Setting QSPECTRE")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qspectre")
endif()
add_definitions(-DWIN32 -D_WINDOWS -DOS_WIN32 -D_CRT_SECURE_NO_WARNINGS) add_definitions(-DWIN32 -D_WINDOWS -DOS_WIN32 -D_CRT_SECURE_NO_WARNINGS)
# #
@@ -75,6 +69,9 @@ if(WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /guard:cf") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /guard:cf")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /guard:cf /DYNAMICBASE") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /guard:cf /DYNAMICBASE")
message("Setting QSPECTRE")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qspectre")
message("Setting CETCOMPAT") message("Setting CETCOMPAT")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /CETCOMPAT") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /CETCOMPAT")
@@ -167,45 +164,15 @@ add_custom_target(hamcore-archive-build
ALL ALL
DEPENDS "${BUILD_DIRECTORY}/hamcore.se2" DEPENDS "${BUILD_DIRECTORY}/hamcore.se2"
) )
if(IS_CROSS_COMPILATION MATCHES "arm64-on-x64")
file(TO_CMAKE_PATH "${TOP_DIRECTORY}" TOP_DIRECTORY_NORM)
set(X64_HAMCORE_BUILDER
"${TOP_DIRECTORY_NORM}/out/build/x64-native/src/hamcorebuilder/hamcorebuilder.exe"
)
if(EXISTS "${X64_HAMCORE_BUILDER}")
message(STATUS "file exist (from TOP_DIRECTORY)")
endif()
# support cross compile, when you compile ARM64 version on X64 Platform add_custom_command(
if(EXISTS "${X64_HAMCORE_BUILDER}") COMMENT "Building hamcore.se2 archive file..."
message("X64_HAMCORE_BUILDER found: ${X64_HAMCORE_BUILDER}") COMMAND hamcorebuilder "hamcore.se2" "${TOP_DIRECTORY}/src/bin/hamcore"
elseif(EXISTS("${TOP_DIRECTORY}/out/build/x64-native/src/hamcorebuilder/hamcorebuilder.exe")) DEPENDS hamcorebuilder "${TOP_DIRECTORY}/src/bin/hamcore/"
set(X64_HAMCORE_BUILDER "${TOP_DIRECTORY}/out/build/x64-native/src/hamcorebuilder/hamcorebuilder.exe") OUTPUT "${BUILD_DIRECTORY}/hamcore.se2"
else() WORKING_DIRECTORY "${BUILD_DIRECTORY}"
message("${TOP_DIRECTORY}/out/build/x64-native/src/hamcorebuilder/hamcorebuilder.exe") VERBATIM
message(FATAL_ERROR "X64_HAMCORE_BUILDER not found: ${X64_HAMCORE_BUILDER}, pls build x64-native version first") )
endif()
message(STATUS "X64_HAMCORE_BUILDER = ${X64_HAMCORE_BUILDER}")
add_custom_command(
COMMENT "Building hamcore.se2 archive file..."
COMMAND ${X64_HAMCORE_BUILDER} "hamcore.se2" "${TOP_DIRECTORY}/src/bin/hamcore"
DEPENDS ${X64_HAMCORE_BUILDER} "${TOP_DIRECTORY}/src/bin/hamcore/"
OUTPUT "${BUILD_DIRECTORY}/hamcore.se2"
WORKING_DIRECTORY "${BUILD_DIRECTORY}"
VERBATIM
)
else()
add_custom_command(
COMMENT "Building hamcore.se2 archive file..."
COMMAND hamcorebuilder "hamcore.se2" "${TOP_DIRECTORY}/src/bin/hamcore"
DEPENDS hamcorebuilder "${TOP_DIRECTORY}/src/bin/hamcore/"
OUTPUT "${BUILD_DIRECTORY}/hamcore.se2"
WORKING_DIRECTORY "${BUILD_DIRECTORY}"
VERBATIM
)
endif()
if(WIN32) if(WIN32)
# PenCore # PenCore
+10 -22
View File
@@ -12,15 +12,6 @@ else()
add_library(cedar SHARED ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR}) add_library(cedar SHARED ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR})
endif() endif()
if(MSVC)
target_compile_options(cedar PRIVATE /EHsc)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
target_compile_options(cedar PRIVATE /EHsc)
else()
target_compile_options(cedar PRIVATE -fexceptions)
endif()
endif()
set_target_properties(cedar set_target_properties(cedar
PROPERTIES PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
@@ -31,22 +22,19 @@ set_target_properties(cedar
target_link_libraries(cedar PUBLIC mayaqua) target_link_libraries(cedar PUBLIC mayaqua)
cmake_host_system_information(RESULT HAS_SSE2 QUERY HAS_SSE2) cmake_host_system_information(RESULT HAS_SSE2 QUERY HAS_SSE2)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|aarch64|arm64v8|ARM64")
message(STATUS "Target architecture is ARM64") set(BLAKE2_SRC_PATH $<IF:$<BOOL:${HAS_SSE2}>,${TOP_DIRECTORY}/3rdparty/BLAKE2/sse,${TOP_DIRECTORY}/3rdparty/BLAKE2/ref>)
set(BLAKE2_SRC_PATH "${TOP_DIRECTORY}/3rdparty/BLAKE2/neon") set(BLAKE2_SRC $<IF:$<BOOL:${HAS_SSE2}>,${BLAKE2_SRC_PATH}/blake2s.c,${BLAKE2_SRC_PATH}/blake2s-ref.c>)
set(BLAKE2_SRC "${BLAKE2_SRC_PATH}/blake2s-neon.c")
else()
set(BLAKE2_SRC_PATH $<IF:$<BOOL:${HAS_SSE2}>,${TOP_DIRECTORY}/3rdparty/BLAKE2/sse,${TOP_DIRECTORY}/3rdparty/BLAKE2/ref>)
set(BLAKE2_SRC $<IF:$<BOOL:${HAS_SSE2}>,${BLAKE2_SRC_PATH}/blake2s.c,${BLAKE2_SRC_PATH}/blake2s-ref.c>)
if(HAS_SSE2)
# If SSE2 is enabled, a build failure occurs with MSVC because it doesn't define "__SSE2__".
# The fix consists in defining "HAVE_SSE2" manually, effectively overriding the check.
set_property(SOURCE ${BLAKE2_SRC} PROPERTY COMPILE_DEFINITIONS "HAVE_SSE2")
endif()
endif()
target_include_directories(cedar PUBLIC ${BLAKE2_SRC_PATH}) target_include_directories(cedar PUBLIC ${BLAKE2_SRC_PATH})
target_sources(cedar PRIVATE ${BLAKE2_SRC}) target_sources(cedar PRIVATE ${BLAKE2_SRC})
if(HAS_SSE2)
# If SSE2 is enabled, a build failure occurs with MSVC because it doesn't define "__SSE2__".
# The fix consists in defining "HAVE_SSE2" manually, effectively overriding the check.
set_property(SOURCE ${BLAKE2_SRC} PROPERTY COMPILE_DEFINITIONS "HAVE_SSE2")
endif()
if(VCPKG_TARGET_TRIPLET) if(VCPKG_TARGET_TRIPLET)
find_package(unofficial-sodium CONFIG REQUIRED) find_package(unofficial-sodium CONFIG REQUIRED)
target_link_libraries(cedar PUBLIC unofficial-sodium::sodium) target_link_libraries(cedar PUBLIC unofficial-sodium::sodium)
+6 -8
View File
@@ -99,8 +99,6 @@ void CheckNetworkAcceptThread(THREAD *thread, void *param)
Disconnect(s); Disconnect(s);
ReleaseSock(s); ReleaseSock(s);
Free(c);
} }
@@ -157,15 +155,15 @@ void CheckNetworkListenThread(THREAD *thread, void *param)
} }
else else
{ {
CHECK_NETWORK_2 *c; CHECK_NETWORK_2 c;
THREAD *t; THREAD *t;
c = ZeroMalloc(sizeof(CHECK_NETWORK_2)); Zero(&c, sizeof(c));
c->s = new_sock; c.s = new_sock;
c->k = pri; c.k = pri;
c->x = x; c.x = x;
t = NewThread(CheckNetworkAcceptThread, c); t = NewThread(CheckNetworkAcceptThread, &c);
Insert(o, t); Insert(o, t);
} }
} }
+1 -43
View File
@@ -1938,7 +1938,6 @@ bool PasswordPrompt(char *password, UINT size)
c = _getch(); c = _getch();
#else // OS_WIN32 #else // OS_WIN32
c = getc(stdin); c = getc(stdin);
PROCESS_CH:
#endif // OS_WIN32 #endif // OS_WIN32
if (c >= 0x20 && c <= 0x7E) if (c >= 0x20 && c <= 0x7E)
@@ -1953,7 +1952,6 @@ PROCESS_CH:
else if (c == 0x03) else if (c == 0x03)
{ {
// Break // Break
RestoreConsole(console);
exit(0); exit(0);
} }
else if (c == 0x04 || c == 0x1a || c == 0x0D || c==0x0A) else if (c == 0x04 || c == 0x1a || c == 0x0D || c==0x0A)
@@ -1979,47 +1977,7 @@ PROCESS_CH:
goto BACKSPACE; goto BACKSPACE;
} }
} }
#ifdef OS_UNIX // OS_UNIX else if (c == 0x08)
else if (c == 0x1B)
{
c = getc(stdin);
if (c != 0x5B && c != 0x4F)
{
// ESC key
goto PROCESS_CH;
}
c = getc(stdin);
if (c == 0x44)
{
// Left arrow key
goto BACKSPACE;
}
else if (c == 0x33)
{
c = getc(stdin);
if (c == 0x7E)
{
// Delete key
goto BACKSPACE;
}
}
// Drain remaining sequence bytes (most are <= 6)
for (int i = 0; i < 6; i++)
{
if (c >= 0x40 && c <= 0x7E)
{
// End of sequence
break;
}
c = getc(stdin);
}
continue;
}
#endif // OS_UNIX
else if (c == 0x08 || c == 0x7F)
{ {
BACKSPACE: BACKSPACE:
// Backspace // Backspace
-2
View File
@@ -630,7 +630,6 @@ void DataToHubOptionStruct(HUB_OPTION *o, RPC_ADMIN_OPTION *ao)
GetHubAdminOptionDataAndSet(ao, "UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption); GetHubAdminOptionDataAndSet(ao, "UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption);
GetHubAdminOptionDataAndSet(ao, "UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId); GetHubAdminOptionDataAndSet(ao, "UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId);
GetHubAdminOptionDataAndSet(ao, "AllowEapMatchUserByCert", o->AllowEapMatchUserByCert); GetHubAdminOptionDataAndSet(ao, "AllowEapMatchUserByCert", o->AllowEapMatchUserByCert);
GetHubAdminOptionDataAndSet(ao, "DhcpDiscoverTimeoutMs", o->DhcpDiscoverTimeoutMs);
} }
// Convert the contents of the HUB_OPTION to data // Convert the contents of the HUB_OPTION to data
@@ -706,7 +705,6 @@ void HubOptionStructToData(RPC_ADMIN_OPTION *ao, HUB_OPTION *o, char *hub_name)
Add(aol, NewAdminOption("UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption)); Add(aol, NewAdminOption("UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption));
Add(aol, NewAdminOption("UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId)); Add(aol, NewAdminOption("UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId));
Add(aol, NewAdminOption("AllowEapMatchUserByCert", o->AllowEapMatchUserByCert)); Add(aol, NewAdminOption("AllowEapMatchUserByCert", o->AllowEapMatchUserByCert));
Add(aol, NewAdminOption("DhcpDiscoverTimeoutMs", o->DhcpDiscoverTimeoutMs));
Zero(ao, sizeof(RPC_ADMIN_OPTION)); Zero(ao, sizeof(RPC_ADMIN_OPTION));
-4
View File
@@ -30,9 +30,6 @@
// Default flooding queue length // Default flooding queue length
#define DEFAULT_FLOODING_QUEUE_LENGTH (32 * 1024 * 1024) #define DEFAULT_FLOODING_QUEUE_LENGTH (32 * 1024 * 1024)
// Default DHCP Discover Timeout
#define DEFAULT_DHCP_DISCOVER_TIMEOUT (5 * 1000)
// SoftEther link control packet // SoftEther link control packet
struct SE_LINK struct SE_LINK
{ {
@@ -186,7 +183,6 @@ struct HUB_OPTION
bool UseHubNameAsDhcpUserClassOption; // Add HubName to DHCP request as User-Class option bool UseHubNameAsDhcpUserClassOption; // Add HubName to DHCP request as User-Class option
bool UseHubNameAsRadiusNasId; // Add HubName to Radius request as NAS-Identifier attrioption bool UseHubNameAsRadiusNasId; // Add HubName to Radius request as NAS-Identifier attrioption
bool AllowEapMatchUserByCert; // Allow matching EAP Identity with user certificate CNs bool AllowEapMatchUserByCert; // Allow matching EAP Identity with user certificate CNs
UINT DhcpDiscoverTimeoutMs; // Timeout to wait for DHCP server response on DISCOVER request
}; };
// MAC table entry // MAC table entry
+2 -8
View File
@@ -493,14 +493,12 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
{ {
UINTToIP(&ipc->DefaultGateway, hub->Option->DefaultGateway); UINTToIP(&ipc->DefaultGateway, hub->Option->DefaultGateway);
UINTToIP(&ipc->SubnetMask, hub->Option->DefaultSubnet); UINTToIP(&ipc->SubnetMask, hub->Option->DefaultSubnet);
ipc->DhcpDiscoverTimeoutMs = hub->Option->DhcpDiscoverTimeoutMs;
GetBroadcastAddress4(&ipc->BroadcastAddress, &ipc->DefaultGateway, &ipc->SubnetMask); GetBroadcastAddress4(&ipc->BroadcastAddress, &ipc->DefaultGateway, &ipc->SubnetMask);
} }
else else
{ {
ZeroIP4(&ipc->DefaultGateway); ZeroIP4(&ipc->DefaultGateway);
ZeroIP4(&ipc->SubnetMask); ZeroIP4(&ipc->SubnetMask);
ipc->DhcpDiscoverTimeoutMs = DEFAULT_DHCP_DISCOVER_TIMEOUT;
ZeroIP4(&ipc->BroadcastAddress); ZeroIP4(&ipc->BroadcastAddress);
} }
@@ -567,9 +565,6 @@ IPC *NewIPCBySock(CEDAR *cedar, SOCK *s, void *mac_address)
ipc->Sock = s; ipc->Sock = s;
AddRef(s->ref); AddRef(s->ref);
// Initialize to pass the validity check on the source IP address performed by IPCSendIPv4()
ZeroIP4(&ipc->ClientIPAddress);
Copy(ipc->MacAddress, mac_address, 6); Copy(ipc->MacAddress, mac_address, 6);
ipc->Interrupt = NewInterruptManager(); ipc->Interrupt = NewInterruptManager();
@@ -798,8 +793,7 @@ bool IPCDhcpAllocateIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube)
StrCpy(req.Hostname, sizeof(req.Hostname), ipc->ClientHostname); StrCpy(req.Hostname, sizeof(req.Hostname), ipc->ClientHostname);
IPCDhcpSetConditionalUserClass(ipc, &req); IPCDhcpSetConditionalUserClass(ipc, &req);
UINT discoverTimeout = ipc->DhcpDiscoverTimeoutMs > 0 ? ipc->DhcpDiscoverTimeoutMs : DEFAULT_DHCP_DISCOVER_TIMEOUT; d = IPCSendDhcpRequest(ipc, NULL, tran_id, &req, DHCP_OFFER, IPC_DHCP_TIMEOUT, discon_poll_tube);
d = IPCSendDhcpRequest(ipc, NULL, tran_id, &req, DHCP_OFFER, discoverTimeout, discon_poll_tube);
if (d == NULL) if (d == NULL)
{ {
return false; return false;
@@ -902,7 +896,7 @@ DHCPV4_DATA *IPCSendDhcpRequest(IPC *ipc, IP *dest_ip, UINT tran_id, DHCP_OPTION
} }
// Retransmission interval // Retransmission interval
resend_interval = MIN(IPC_DHCP_MAX_RESEND_INTERVAL, MAX(1, (timeout / 3) - 100)); resend_interval = MAX(1, (timeout / 3) - 100);
// Time-out time // Time-out time
giveup_time = Tick64() + (UINT64)timeout; giveup_time = Tick64() + (UINT64)timeout;
-2
View File
@@ -19,7 +19,6 @@
#define IPC_DHCP_TIMEOUT (5 * 1000) #define IPC_DHCP_TIMEOUT (5 * 1000)
#define IPC_DHCP_MIN_LEASE 5 #define IPC_DHCP_MIN_LEASE 5
#define IPC_DHCP_DEFAULT_LEASE 3600 #define IPC_DHCP_DEFAULT_LEASE 3600
#define IPC_DHCP_MAX_RESEND_INTERVAL (3 * 1000)
#define IPC_MAX_PACKET_QUEUE_LEN 10000 #define IPC_MAX_PACKET_QUEUE_LEN 10000
@@ -150,7 +149,6 @@ struct IPC
SHARED_BUFFER *IpcSessionSharedBuffer; // A shared buffer between IPC and Session SHARED_BUFFER *IpcSessionSharedBuffer; // A shared buffer between IPC and Session
IPC_SESSION_SHARED_BUFFER_DATA *IpcSessionShared; // Shared data between IPC and Session IPC_SESSION_SHARED_BUFFER_DATA *IpcSessionShared; // Shared data between IPC and Session
UINT Layer; UINT Layer;
UINT DhcpDiscoverTimeoutMs; // Timeut to wait for DHCP server response on DISCOVER request
// IPv6 stuff // IPv6 stuff
QUEUE *IPv6ReceivedQueue; // IPv6 reception queue QUEUE *IPv6ReceivedQueue; // IPv6 reception queue
+2 -2
View File
@@ -457,10 +457,10 @@ void L3KnownArp(L3IF *f, UINT ip, UCHAR *mac)
// Delete an ARP query entry to this IP address // Delete an ARP query entry to this IP address
Zero(&t, sizeof(t)); Zero(&t, sizeof(t));
t.IpAddress = ip; t.IpAddress = ip;
w = Search(f->ArpWaitTable, &t); w = Search(f->IpWaitList, &t);
if (w != NULL) if (w != NULL)
{ {
Delete(f->ArpWaitTable, w); Delete(f->IpWaitList, w);
Free(w); Free(w);
} }
+2 -2
View File
@@ -5843,6 +5843,7 @@ bool ServerDownloadSignature(CONNECTION *c, char **error_detail_str)
// Target is invalid // Target is invalid
HttpSendNotFound(s, h->Target); HttpSendNotFound(s, h->Target);
Free(data); Free(data);
FreeHttpHeader(h);
*error_detail_str = "POST_Target_Wrong"; *error_detail_str = "POST_Target_Wrong";
} }
else else
@@ -5860,10 +5861,10 @@ bool ServerDownloadSignature(CONNECTION *c, char **error_detail_str)
{ {
// WaterMark is incorrect // WaterMark is incorrect
HttpSendForbidden(s, h->Target, NULL); HttpSendForbidden(s, h->Target, NULL);
FreeHttpHeader(h);
*error_detail_str = "POST_WaterMark_Error"; *error_detail_str = "POST_WaterMark_Error";
} }
} }
FreeHttpHeader(h);
} }
else if (StrCmpi(h->Method, "OPTIONS") == 0) else if (StrCmpi(h->Method, "OPTIONS") == 0)
{ {
@@ -5883,7 +5884,6 @@ bool ServerDownloadSignature(CONNECTION *c, char **error_detail_str)
continue; continue;
} }
} }
FreeHttpHeader(h);
} }
else if (StrCmpi(h->Method, "SSTP_DUPLEX_POST") == 0 && (ProtoEnabled(server->Proto, "SSTP") || s->IsReverseAcceptedSocket) && GetServerCapsBool(server, "b_support_sstp")) else if (StrCmpi(h->Method, "SSTP_DUPLEX_POST") == 0 && (ProtoEnabled(server->Proto, "SSTP") || s->IsReverseAcceptedSocket) && GetServerCapsBool(server, "b_support_sstp"))
{ {
-13
View File
@@ -2337,7 +2337,6 @@ void SiSetDefaultHubOption(HUB_OPTION *o)
o->AccessListIncludeFileCacheLifetime = ACCESS_LIST_INCLUDE_FILE_CACHE_LIFETIME; o->AccessListIncludeFileCacheLifetime = ACCESS_LIST_INCLUDE_FILE_CACHE_LIFETIME;
o->RemoveDefGwOnDhcpForLocalhost = true; o->RemoveDefGwOnDhcpForLocalhost = true;
o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH; o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH;
o->DhcpDiscoverTimeoutMs = DEFAULT_DHCP_DISCOVER_TIMEOUT;
} }
// Create a default virtual HUB // Create a default virtual HUB
@@ -3943,11 +3942,6 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o)
o->UseHubNameAsDhcpUserClassOption = CfgGetBool(f, "UseHubNameAsDhcpUserClassOption"); o->UseHubNameAsDhcpUserClassOption = CfgGetBool(f, "UseHubNameAsDhcpUserClassOption");
o->UseHubNameAsRadiusNasId = CfgGetBool(f, "UseHubNameAsRadiusNasId"); o->UseHubNameAsRadiusNasId = CfgGetBool(f, "UseHubNameAsRadiusNasId");
o->AllowEapMatchUserByCert = CfgGetBool(f, "AllowEapMatchUserByCert"); o->AllowEapMatchUserByCert = CfgGetBool(f, "AllowEapMatchUserByCert");
o->DhcpDiscoverTimeoutMs = CfgGetInt(f, "DhcpDiscoverTimeoutMs");
if (o->DhcpDiscoverTimeoutMs == 0)
{
o->DhcpDiscoverTimeoutMs = DEFAULT_DHCP_DISCOVER_TIMEOUT;
}
// Enabled by default // Enabled by default
if (CfgIsItem(f, "ManageOnlyPrivateIP")) if (CfgIsItem(f, "ManageOnlyPrivateIP"))
@@ -4054,7 +4048,6 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o)
CfgAddBool(f, "UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption); CfgAddBool(f, "UseHubNameAsDhcpUserClassOption", o->UseHubNameAsDhcpUserClassOption);
CfgAddBool(f, "UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId); CfgAddBool(f, "UseHubNameAsRadiusNasId", o->UseHubNameAsRadiusNasId);
CfgAddBool(f, "AllowEapMatchUserByCert", o->AllowEapMatchUserByCert); CfgAddBool(f, "AllowEapMatchUserByCert", o->AllowEapMatchUserByCert);
CfgAddInt(f, "DhcpDiscoverTimeoutMs", o->DhcpDiscoverTimeoutMs);
} }
// Write the user // Write the user
@@ -7540,11 +7533,6 @@ void SiCalledUpdateHub(SERVER *s, PACK *p)
o.UseHubNameAsDhcpUserClassOption = PackGetBool(p, "UseHubNameAsDhcpUserClassOption"); o.UseHubNameAsDhcpUserClassOption = PackGetBool(p, "UseHubNameAsDhcpUserClassOption");
o.UseHubNameAsRadiusNasId = PackGetBool(p, "UseHubNameAsRadiusNasId"); o.UseHubNameAsRadiusNasId = PackGetBool(p, "UseHubNameAsRadiusNasId");
o.AllowEapMatchUserByCert = PackGetBool(p, "AllowEapMatchUserByCert"); o.AllowEapMatchUserByCert = PackGetBool(p, "AllowEapMatchUserByCert");
o.DhcpDiscoverTimeoutMs = PackGetInt(p, "DhcpDiscoverTimeoutMs");
if (o.DhcpDiscoverTimeoutMs == 0)
{
o.DhcpDiscoverTimeoutMs = DEFAULT_DHCP_DISCOVER_TIMEOUT;
}
save_packet_log = PackGetInt(p, "SavePacketLog"); save_packet_log = PackGetInt(p, "SavePacketLog");
packet_log_switch_type = PackGetInt(p, "PacketLogSwitchType"); packet_log_switch_type = PackGetInt(p, "PacketLogSwitchType");
@@ -9380,7 +9368,6 @@ void SiPackAddCreateHub(PACK *p, HUB *h)
PackAddBool(p, "UseHubNameAsDhcpUserClassOption", h->Option->UseHubNameAsDhcpUserClassOption); PackAddBool(p, "UseHubNameAsDhcpUserClassOption", h->Option->UseHubNameAsDhcpUserClassOption);
PackAddBool(p, "UseHubNameAsRadiusNasId", h->Option->UseHubNameAsRadiusNasId); PackAddBool(p, "UseHubNameAsRadiusNasId", h->Option->UseHubNameAsRadiusNasId);
PackAddBool(p, "AllowEapMatchUserByCert", h->Option->AllowEapMatchUserByCert); PackAddBool(p, "AllowEapMatchUserByCert", h->Option->AllowEapMatchUserByCert);
PackAddInt(p, "DhcpDiscoverTimeoutMs", h->Option->DhcpDiscoverTimeoutMs);
SiAccessListToPack(p, h->AccessList); SiAccessListToPack(p, h->AccessList);
+1 -106
View File
@@ -1190,67 +1190,6 @@ void NnIpSendForInternet(NATIVE_NAT *t, UCHAR ip_protocol, UCHAR ttl, UINT src_i
} }
} }
// Host IP address cache TTL in milliseconds (60 seconds)
#define HOST_IP_CACHE_TTL_MS 60000
// Check if destination IP is one of the host's own IP addresses
// Uses caching to avoid frequent system calls
// Returns true if dest_ip matches any of the host's IPs
bool IsDestinationHostOwnIP(VH *v, UINT dest_ip)
{
bool is_host_ip = false;
UINT64 now;
LIST *new_list = NULL;
// Validate arguments
if (v == NULL)
{
return false;
}
now = Tick64();
Lock(v->HostIPCacheLock);
{
// Check if cache needs refresh (every 60 seconds or if not initialized)
if (v->HostIPAddressCache == NULL || now >= v->HostIPCacheExpires)
{
// Get new list while holding the lock to prevent multiple threads from refreshing
new_list = GetHostIPAddressList();
// Free old cache
if (v->HostIPAddressCache != NULL)
{
FreeHostIPAddressList(v->HostIPAddressCache);
}
// Set new cache with TTL
v->HostIPAddressCache = new_list;
v->HostIPCacheExpires = now + HOST_IP_CACHE_TTL_MS;
}
// Check if dest_ip matches any cached host IP
if (v->HostIPAddressCache != NULL)
{
UINT i;
IP dest_ip_obj;
UINTToIP(&dest_ip_obj, dest_ip);
for (i = 0; i < LIST_NUM(v->HostIPAddressCache); i++)
{
IP *host_ip = LIST_DATA(v->HostIPAddressCache, i);
if (IsIP4(host_ip) && CmpIpAddr(&dest_ip_obj, host_ip) == 0)
{
is_host_ip = true;
break;
}
}
}
}
Unlock(v->HostIPCacheLock);
return is_host_ip;
}
// Communication of ICMP towards the Internet // Communication of ICMP towards the Internet
void NnIcmpEchoRecvForInternet(VH *v, UINT src_ip, UINT dest_ip, void *data, UINT size, UCHAR ttl, void *icmp_data, UINT icmp_size, UCHAR *ip_header, UINT ip_header_size, UINT max_l3_size) void NnIcmpEchoRecvForInternet(VH *v, UINT src_ip, UINT dest_ip, void *data, UINT size, UCHAR ttl, void *icmp_data, UINT icmp_size, UCHAR *ip_header, UINT ip_header_size, UINT max_l3_size)
{ {
@@ -1270,15 +1209,6 @@ void NnIcmpEchoRecvForInternet(VH *v, UINT src_ip, UINT dest_ip, void *data, UIN
return; return;
} }
// Check if destination is the host's own IP address
// When Native NAT tries to send packets to the host's own IP, the OS routing
// may fail or behave unexpectedly. Drop such packets to avoid issues.
if (IsDestinationHostOwnIP(v, dest_ip))
{
// Destination is the host's own IP - drop the packet
return;
}
t = v->NativeNat; t = v->NativeNat;
old_icmp_header = (ICMP_HEADER *)icmp_data; old_icmp_header = (ICMP_HEADER *)icmp_data;
@@ -1421,15 +1351,6 @@ void NnUdpRecvForInternet(VH *v, UINT src_ip, UINT src_port, UINT dest_ip, UINT
return; return;
} }
// Check if destination is the host's own IP address
// When Native NAT tries to send packets to the host's own IP, the OS routing
// may fail or behave unexpectedly. Drop such packets to avoid issues.
if (IsDestinationHostOwnIP(v, dest_ip))
{
// Destination is the host's own IP - drop the packet
return;
}
t = v->NativeNat; t = v->NativeNat;
// Search whether there is an existing session // Search whether there is an existing session
@@ -1528,15 +1449,6 @@ void NnTcpRecvForInternet(VH *v, UINT src_ip, UINT src_port, UINT dest_ip, UINT
return; return;
} }
// Check if destination is the host's own IP address
// When Native NAT tries to send packets to the host's own IP, the OS routing
// may fail or behave unexpectedly. Drop such packets to avoid issues.
if (IsDestinationHostOwnIP(v, dest_ip))
{
// Destination is the host's own IP - drop the packet
return;
}
t = v->NativeNat; t = v->NativeNat;
// Search whether there is an existing session // Search whether there is an existing session
@@ -2903,7 +2815,6 @@ void NativeNatThread(THREAD *thread, void *param)
if (a != NULL) if (a != NULL)
{ {
char macstr[64]; char macstr[64];
IP dhcp_ip;
// Acquisition success // Acquisition success
Debug("NnGetNextInterface Ok: %s\n", a->DeviceName); Debug("NnGetNextInterface Ok: %s\n", a->DeviceName);
@@ -2931,10 +2842,9 @@ void NativeNatThread(THREAD *thread, void *param)
Debug("NnMainLoop Start.\n"); Debug("NnMainLoop Start.\n");
MacToStr(macstr, sizeof(macstr), a->Ipc->MacAddress); MacToStr(macstr, sizeof(macstr), a->Ipc->MacAddress);
UINTToIP(&dhcp_ip, a->CurrentDhcpOptionList.ServerAddress);
NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName, NLog(t->v, "LH_KERNEL_MODE_START", a->DeviceName,
&a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress, &a->Ipc->ClientIPAddress, &a->Ipc->SubnetMask, &a->Ipc->DefaultGateway, &a->Ipc->BroadcastAddress,
macstr, &dhcp_ip, &a->DnsServerIP); macstr, &a->CurrentDhcpOptionList.ServerAddress, &a->DnsServerIP);
NnMainLoop(t, a); NnMainLoop(t, a);
Debug("NnMainLoop End.\n"); Debug("NnMainLoop End.\n");
@@ -10281,13 +10191,6 @@ void Virtual_Free(VH *v)
LockVirtual(v); LockVirtual(v);
{ {
// Free host IP cache
if (v->HostIPAddressCache != NULL)
{
FreeHostIPAddressList(v->HostIPAddressCache);
v->HostIPAddressCache = NULL;
}
// Release the IP combining list // Release the IP combining list
FreeIpCombineList(v); FreeIpCombineList(v);
@@ -10322,9 +10225,6 @@ void Virtual_Free(VH *v)
} }
UnlockVirtual(v); UnlockVirtual(v);
// Release the host IP cache lock
DeleteLock(v->HostIPCacheLock);
// Release the logger // Release the logger
FreeLog(v->Logger); FreeLog(v->Logger);
} }
@@ -10455,11 +10355,6 @@ VH *NewVirtualHostEx(CEDAR *cedar, CLIENT_OPTION *option, CLIENT_AUTH *auth, VH_
v->nat = nat; v->nat = nat;
// Initialize host IP cache for Native NAT
v->HostIPAddressCache = NULL;
v->HostIPCacheExpires = 0;
v->HostIPCacheLock = NewLock();
// Examine whether ICMP Raw Socket can be created // Examine whether ICMP Raw Socket can be created
s = NewUDP4(MAKE_SPECIAL_PORT(IP_PROTO_ICMPV4), NULL); s = NewUDP4(MAKE_SPECIAL_PORT(IP_PROTO_ICMPV4), NULL);
if (s != NULL) if (s != NULL)
-5
View File
@@ -313,11 +313,6 @@ struct VH
HUB_OPTION *HubOption; // Pointer to the Virtual HUB options HUB_OPTION *HubOption; // Pointer to the Virtual HUB options
NATIVE_NAT *NativeNat; // Native NAT NATIVE_NAT *NativeNat; // Native NAT
// Host IP cache for Native NAT packet filtering
LIST *HostIPAddressCache; // Cached list of host IP addresses
UINT64 HostIPCacheExpires; // When the cache expires (tick64)
LOCK *HostIPCacheLock; // Lock for cache access
}; };
// Virtual host option // Virtual host option
+3 -31
View File
@@ -18,46 +18,20 @@ set_target_properties(mayaqua
find_package(OpenSSL REQUIRED) find_package(OpenSSL REQUIRED)
if(OPENSSL_VERSION VERSION_GREATER_EQUAL "3") if(OPENSSL_VERSION VERSION_LESS "3") # Disable oqsprovider when OpenSSL version < 3
set(OQS_ENABLE ON CACHE BOOL "By setting this to OFF, Open Quantum Safe algorithms will not be built in") add_definitions(-DSKIP_OQS_PROVIDER)
else() else()
# Disable oqsprovider when OpenSSL version < 3
set(OQS_ENABLE OFF)
endif()
if(OQS_ENABLE)
set(OQS_BUILD_ONLY_LIB ON CACHE BOOL "Set liboqs to build only the library (no tests)") set(OQS_BUILD_ONLY_LIB ON CACHE BOOL "Set liboqs to build only the library (no tests)")
set(BUILD_TESTING OFF CACHE BOOL "By setting this to OFF, no tests or examples will be compiled.") set(BUILD_TESTING OFF CACHE BOOL "By setting this to OFF, no tests or examples will be compiled.")
set(OQS_PROVIDER_BUILD_STATIC ON CACHE BOOL "Build a static library instead of a shared library") # Build oqsprovider as a static library (defaults to shared) set(OQS_PROVIDER_BUILD_STATIC ON CACHE BOOL "Build a static library instead of a shared library") # Build oqsprovider as a static library (defaults to shared)
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/src/Mayaqua/3rdparty/") list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/src/Mayaqua/3rdparty/")
# Disable all other KEM families
set(OQS_ENABLE_KEM_FRODOKEM OFF)
set(OQS_ENABLE_KEM_NTRUPRIME OFF)
set(OQS_ENABLE_KEM_NTRU OFF)
set(OQS_ENABLE_KEM_CLASSIC_MCELIECE OFF)
set(OQS_ENABLE_KEM_HQC OFF)
set(OQS_ENABLE_KEM_BIKE OFF)
# Disable all SIG families
set(OQS_ENABLE_SIG_ML_DSA OFF)
set(OQS_ENABLE_SIG_FALCON OFF)
set(OQS_ENABLE_SIG_DILITHIUM OFF)
set(OQS_ENABLE_SIG_SPHINCS OFF)
set(OQS_ENABLE_SIG_MAYO OFF)
set(OQS_ENABLE_SIG_CROSS OFF)
set(OQS_ENABLE_SIG_UOV OFF)
set(OQS_ENABLE_SIG_SNOVA OFF)
set(OQS_ENABLE_SIG_SLH_DSA OFF)
add_subdirectory(3rdparty/liboqs) add_subdirectory(3rdparty/liboqs)
add_subdirectory(3rdparty/oqs-provider) add_subdirectory(3rdparty/oqs-provider)
target_include_directories(oqsprovider PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/liboqs/include) target_include_directories(oqsprovider PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/liboqs/include)
set_property(TARGET oqsprovider PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET oqsprovider PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(mayaqua PRIVATE oqsprovider) target_link_libraries(mayaqua PRIVATE oqsprovider)
else()
add_definitions(-DSKIP_OQS_PROVIDER)
endif() endif()
include(CheckSymbolExists) include(CheckSymbolExists)
@@ -151,10 +125,8 @@ if(UNIX)
message("-- Using system's cpu_features") message("-- Using system's cpu_features")
target_link_libraries(mayaqua PRIVATE cpu_features) target_link_libraries(mayaqua PRIVATE cpu_features)
else() else()
message("-- Using bundled cpu_features")
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_subdirectory(3rdparty/cpu_features) add_subdirectory(3rdparty/cpu_features)
set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(mayaqua PRIVATE cpu_features) target_link_libraries(mayaqua PRIVATE cpu_features)
endif() endif()
+3 -7
View File
@@ -4462,13 +4462,9 @@ bool IsAesNiSupported()
// Unfortunately OpenSSL doesn't provide a function to do it // Unfortunately OpenSSL doesn't provide a function to do it
#ifdef _MSC_VER #ifdef _MSC_VER
#if defined(_M_X64) || defined(_M_IX86) int regs[4]; // EAX, EBX, ECX, EDX
int regs[4]; // EAX, EBX, ECX, EDX __cpuid(regs, 1);
__cpuid(regs, 1); supported = (regs[2] >> 25) & 1;
supported = (regs[2] >> 25) & 1;
#elif defined(_M_ARM64)
return IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE);
#endif
#else // _MSC_VER #else // _MSC_VER
#if defined(CPU_FEATURES_ARCH_X86) #if defined(CPU_FEATURES_ARCH_X86)
const X86Features features = GetX86Info().features; const X86Features features = GetX86Info().features;
+39 -50
View File
@@ -2057,15 +2057,43 @@ bool ParsePacketL2Ex(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_ex
if (type_id_16 > 1500) if (type_id_16 > 1500)
{ {
if (type_id_16 == MAC_PROTO_TAGVLAN) // Ordinary Ethernet frame
switch (type_id_16)
{ {
// Parse VLAN frame case MAC_PROTO_ARPV4: // ARPv4
return ParsePacketTAGVLAN(p, buf, size, no_l3, no_l3_l4_except_icmpv6); if (no_l3 || no_l3_l4_except_icmpv6)
} {
else return true;
{ }
// Parse Ordinary Ethernet frame
return ParsePacketL3(p, buf, size, type_id_16, no_l3, no_l3_l4_except_icmpv6); return ParsePacketARPv4(p, buf, size);
case MAC_PROTO_IPV4: // IPv4
if (no_l3 || no_l3_l4_except_icmpv6)
{
return true;
}
return ParsePacketIPv4(p, buf, size);
case MAC_PROTO_IPV6: // IPv6
if (no_l3)
{
return true;
}
return ParsePacketIPv6(p, buf, size, no_l3_l4_except_icmpv6);
default: // Unknown
if (type_id_16 == p->VlanTypeID)
{
// VLAN
return ParsePacketTAGVLAN(p, buf, size);
}
else
{
return true;
}
} }
} }
else else
@@ -2100,44 +2128,10 @@ bool ParsePacketL2Ex(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_ex
} }
} }
bool ParsePacketL3(PKT *p, UCHAR *buf, UINT size, USHORT proto, bool no_l3, bool no_l3_l4_except_icmpv6)
{
switch (proto)
{
case MAC_PROTO_ARPV4: // ARPv4
if (no_l3 || no_l3_l4_except_icmpv6)
{
return true;
}
return ParsePacketARPv4(p, buf, size);
case MAC_PROTO_IPV4: // IPv4
if (no_l3 || no_l3_l4_except_icmpv6)
{
return true;
}
return ParsePacketIPv4(p, buf, size);
case MAC_PROTO_IPV6: // IPv6
if (no_l3)
{
return true;
}
return ParsePacketIPv6(p, buf, size, no_l3_l4_except_icmpv6);
default: // Unknown
return true;
}
}
// TAG VLAN parsing // TAG VLAN parsing
bool ParsePacketTAGVLAN(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_except_icmpv6) bool ParsePacketTAGVLAN(PKT *p, UCHAR *buf, UINT size)
{ {
USHORT vlan_ushort; USHORT vlan_ushort;
USHORT proto_ushort;
// Validate arguments // Validate arguments
if (p == NULL || buf == NULL) if (p == NULL || buf == NULL)
{ {
@@ -2157,17 +2151,12 @@ bool ParsePacketTAGVLAN(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4
buf += sizeof(TAGVLAN_HEADER); buf += sizeof(TAGVLAN_HEADER);
size -= sizeof(TAGVLAN_HEADER); size -= sizeof(TAGVLAN_HEADER);
vlan_ushort = READ_USHORT(p->L3.TagVlanHeader->TagID); vlan_ushort = READ_USHORT(p->L3.TagVlanHeader->Data);
vlan_ushort = vlan_ushort & 0xFFF; vlan_ushort = vlan_ushort & 0xFFF;
p->VlanId = vlan_ushort; p->VlanId = vlan_ushort;
proto_ushort = READ_USHORT(p->L3.TagVlanHeader->Protocol); return true;
proto_ushort = proto_ushort & 0xFFFF;
// Parse the L3 packet
return ParsePacketL3(p, buf, size, proto_ushort, no_l3, no_l3_l4_except_icmpv6);
} }
// BPDU Parsing // BPDU Parsing
+2 -4
View File
@@ -87,8 +87,7 @@ struct ARPV4_HEADER
// Tagged VLAN header // Tagged VLAN header
struct TAGVLAN_HEADER struct TAGVLAN_HEADER
{ {
UCHAR TagID[2]; // TagID UCHAR Data[2]; // Data
UCHAR Protocol[2]; // Protocol
} GCC_PACKED; } GCC_PACKED;
// IPv4 header // IPv4 header
@@ -763,11 +762,10 @@ void FreePacketTCPv4(PKT *p);
void FreePacketICMPv4(PKT *p); void FreePacketICMPv4(PKT *p);
void FreePacketDHCPv4(PKT *p); void FreePacketDHCPv4(PKT *p);
bool ParsePacketL2Ex(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_except_icmpv6); bool ParsePacketL2Ex(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_except_icmpv6);
bool ParsePacketL3(PKT *p, UCHAR *buf, UINT size, USHORT proto, bool no_l3, bool no_l3_l4_except_icmpv6);
bool ParsePacketARPv4(PKT *p, UCHAR *buf, UINT size); bool ParsePacketARPv4(PKT *p, UCHAR *buf, UINT size);
bool ParsePacketIPv4(PKT *p, UCHAR *buf, UINT size); bool ParsePacketIPv4(PKT *p, UCHAR *buf, UINT size);
bool ParsePacketBPDU(PKT *p, UCHAR *buf, UINT size); bool ParsePacketBPDU(PKT *p, UCHAR *buf, UINT size);
bool ParsePacketTAGVLAN(PKT *p, UCHAR *buf, UINT size, bool no_l3, bool no_l3_l4_except_icmpv6); bool ParsePacketTAGVLAN(PKT *p, UCHAR *buf, UINT size);
bool ParseICMPv4(PKT *p, UCHAR *buf, UINT size); bool ParseICMPv4(PKT *p, UCHAR *buf, UINT size);
bool ParseICMPv6(PKT *p, UCHAR *buf, UINT size); bool ParseICMPv6(PKT *p, UCHAR *buf, UINT size);
bool ParseTCP(PKT *p, UCHAR *buf, UINT size); bool ParseTCP(PKT *p, UCHAR *buf, UINT size);
+1 -2
View File
@@ -5,8 +5,7 @@
// NDIS6.c // NDIS6.c
// Windows NDIS 6.2 Routine // Windows NDIS 6.2 Routine
//#include <GlobalConst.h> #include <GlobalConst.h>
#include "GlobalConst.h"
#define NEO_DEVICE_DRIVER #define NEO_DEVICE_DRIVER
+18 -30
View File
@@ -9,37 +9,25 @@
#define NDIS5_H #define NDIS5_H
// Win32 DDK related // Win32 DDK related
#ifndef CPU_64 #ifndef CPU_64
#define _X86_ #define _X86_
#else // CPU_64 #else // CPU_64
#ifdef CPU_ARM64 #ifndef NEO_IA64
//#define _ARM64_ #define _AMD64_
//#define ARM64 #define AMD64
#elif defined(NEO_IA64) #else // NEO_IA64
#define _IA64_ #define _IA64_
#define IA64 #define IA64
#else #endif // NEO_IA64
#define _AMD64_ #endif // CPU_64
#define AMD64
#endif
#endif // CPU_64
#define NDIS_MINIPORT_DRIVER #define NDIS_MINIPORT_DRIVER
#ifdef CPU_ARM64 // NDIS 6.2
#define NDIS640_MINIPORT #define NDIS620_MINIPORT
#define NDIS_MINIPORT_MINIMUM_MAJOR_VERSION 6 #define NDIS_SUPPORT_NDIS61 1
#define NDIS_MINIPORT_MINIMUM_MINOR_VERSION 40 #define NDIS_SUPPORT_NDIS620 1
#define NEO_NDIS_MAJOR_VERSION 6 #define NEO_NDIS_MAJOR_VERSION 6
#define NEO_NDIS_MINOR_VERSION 40 #define NEO_NDIS_MINOR_VERSION 20
#else #define NDIS_WDM 1
// NDIS 6.2
#define NDIS620_MINIPORT
#define NDIS_SUPPORT_NDIS61 1
#define NDIS_SUPPORT_NDIS620 1
#define NEO_NDIS_MAJOR_VERSION 6
#define NEO_NDIS_MINOR_VERSION 20
#define NDIS_WDM 1
#endif
#include <wdm.h> #include <wdm.h>
#include <ndis.h> #include <ndis.h>
-107
View File
@@ -1,107 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectGuid>{F7679B65-2FEC-469A-8BAC-B07BF4439422}</ProjectGuid>
<RootNamespace>Neo6</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
<DriverTargetPlatform>Universal</DriverTargetPlatform>
<TargetName>Neo6_arm64_unsigned</TargetName>
<TargetExt>.sys</TargetExt>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>17.0.36310.24</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<IntDir>$(Platform)_$(Configuration)\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<Midl />
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
<FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
<TreatWarningAsError>false</TreatWarningAsError>
<AdditionalIncludeDirectories>$(ProjectDir)\..\;$(SolutionDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>ARM64;_ARM64_;CPU_64;WIN32;CPU_ARM64;NDEBUG;_WINDOWS;_USRDLL;NEO_EXPORTS;VPN_SPEED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>false</StringPooling>
<ExceptionHandling>
</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<StructMemberAlignment>8Bytes</StructMemberAlignment>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<!-- <PreLinkEvent>
<Command>$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource "$(TargetPath)" /OUT:"$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(Platform).res" /PRODUCT:"SoftEther VPN"</Command>
</PreLinkEvent> -->
<ProjectReference>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
</ProjectReference>
<Link>
<OutputFile>$(OutDir)Neo6_arm64_unsigned.sys</OutputFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>ntoskrnl.lib;wdm.lib;hal.lib;;ucrt.lib;ndis.lib;wdmsec.lib;ntdll.lib;Kernel32.lib;fwpkclnt.lib;libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- <ImportLibrary>$(SolutionDir)tmp\lib\$(Platform)_$(Configuration)\$(ProjectName).lib</ImportLibrary> -->
<TargetMachine>MachineARM64</TargetMachine>
</Link>
<!-- <PostBuildEvent>
<Command>$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_ARM64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_ARM64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
</Command>
</PostBuildEvent> -->
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="NDIS6.c" />
<ClCompile Include="Neo6.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="NDIS6.h" />
<ClInclude Include="Neo6.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Neo6.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -1,114 +0,0 @@
; VPN Client Device Driver for Windows 2000 and Greater
;
; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/
;
; BUILD 9658
[Version]
Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
DriverVer = 02/04/2018, 4.25.0.9658
CatalogFile.NT = Neo6_arm64_VPN.cat
[Manufacturer]
%CompanyName% = SoftEther, NTarm64
[SourceDisksNames]
1=%DiskDescription%, "", ,
[SourceDisksFiles]
Neo6_arm64_VPN.sys = 1
[DestinationDirs]
DefaultDestDir = 12
Neo.CopyFiles.Sys = 12
[Neo.CopyFiles.Sys]
Neo6_arm64_VPN.sys, , , 2
[SoftEther.NTarm64]
%NeoAdapter.DeviceDesc% = NeoAdapter.Install, NeoAdapter_VPN
[NeoAdapter.Install]
Characteristics = 0x1
AddReg = Neo.Reg, NeoAdapter.Ndi
CopyFiles = Neo.CopyFiles.Sys
*IfType = 53
*MediaType = 0
*PhysicalMediaType = 0
[NeoAdapter.Install.Services]
AddService = %Neo.Service.Name%, 2, Neo.Service, Neo.EventLog, , %Neo, EventLog.Name%
[NeoAdapter.Ndi]
HKR, , NetworkAddress, 0, %DefaultAddress%
HKR, Ndi, DeviceID, , "NeoAdapter_VPN"
HKR, , DevLoader, , ndis
HKR, , DeviceVxDs, , Neo6_arm64_VPN.sys
HKR, NDIS, LogDriverName, , "Neo_VPN"
HKR, NDIS, MajorNdisVersion, 1, 5
HKR, NDIS, MinorNdisVersion, 1, 0
HKR, Ndi\Interfaces, DefUpper, , "ndis5"
HKR, Ndi\Interfaces, UpperRange, , "ndis5"
HKR, Ndi\Interfaces, LowerRange, , "ethernet"
HKR, Ndi\Interfaces, DefLower, , "ethernet"
HKR, Ndi\Install, ndis5, , "Neo.CopyFiles.Sys"
HKR, Ndi\Params\NetworkAddress, ParamDesc, 0, %NetworkAddress%
HKR, Ndi\Params\NetworkAddress, type, 0, "edit"
HKR, Ndi\Params\NetworkAddress, LimitText, 0, "12"
HKR, Ndi\Params\NetworkAddress, UpperCase, 0, "1"
HKR, Ndi\Params\NetworkAddress, default, 0, %DefaultAddress%
HKR, Ndi\Params\NetworkAddress, optional, 0, "0"
HKR, Ndi\Params\MaxSpeed, ParamDesc, 0, %MaxSpeed%
HKR, Ndi\Params\MaxSpeed, type, 0, "int"
HKR, Ndi\Params\MaxSpeed, default, 0, "100"
HKR, Ndi\Params\MaxSpeed, min, 0, "0"
HKR, Ndi\Params\MaxSpeed, max, 0, "2000"
HKR, Ndi\Params\MaxSpeed, step, 0, "1"
HKR, Ndi\Params\MaxSpeed, Base, 0, "10"
HKR, Ndi\Params\KeepLink, ParamDesc, 0, %KeepLink%
HKR, Ndi\Params\KeepLink, type, 0, "enum"
HKR, Ndi\Params\KeepLink\enum, "1", 0, %On%
HKR, Ndi\Params\KeepLink\enum, "0", 0, %Off%
HKR, Ndi\Params\KeepLink, default, 0, "0"
[Neo.Service]
DisplayName = %Neo.Service.DispName%
Description = %Neo.Service.Desc%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\Neo6_arm64_VPN.sys
LoadOrderGroup = NDIS
[Neo.Reg]
HKR, Ndi, Service, 0, Neo.Service.Name
HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"
[Neo.EventLog]
HKR, , EventMessageFile, 0x00020000, "%11%\IoLogMsg.dll;%12%\Neo6_arm64_VPN.sys"
HKR, , TypesSupported, 0x00010001, 7
[Strings]
CompanyName = "SoftEther Corporation"
DiskDescription = "VPN Client Device Driver Install Disk"
Neo.Service.Name = "Neo_VPN"
Neo.Service.DispName = "VPN Client Device Driver - VPN"
Neo.Service.Desc = "VPN Client Adapter - VPN"
NeoAdapter.DeviceDesc = "VPN Client Adapter - VPN"
Neo.EventLog.Name = "Neo"
NetworkAddress = "MAC Address"
DefaultAddress = "000001000001"
MaxSpeed = "Indicate Speed (Mbps)"
KeepLink = "Keep Link"
On = "On"
Off = "Off"
; Auto Generated 20180205_163621.454
-1
View File
@@ -10,4 +10,3 @@
5 ru Russian Русский 1049 ru 5 ru Russian Русский 1049 ru
6 pt_br Portuguese-Brazil Português-Brasil 1046 pt_br 6 pt_br Portuguese-Brazil Português-Brasil 1046 pt_br
7 id Indonesian Bahasa 1057 id 7 id Indonesian Bahasa 1057 id
8 tr Turkish Türkçe 1055 tr
+1 -1
View File
@@ -3,4 +3,4 @@
# 番号 識別子 英語表記 ローカル表記 Windowsロケール番号 UNIXロケール文字一覧 # 番号 識別子 英語表記 ローカル表記 Windowsロケール番号 UNIXロケール文字一覧
1 en English English 1033 en,us,c 1 en English English 1033 en,us,c
8 tr Turkish Türkçe 1055 tr
+2 -2
View File
@@ -4854,7 +4854,7 @@ CMD_ConnectionList_Help 现在,先获取与 VPN Server 连接的 TCP/IP 一
CMD_ConnectionList_Args ConnectionList CMD_ConnectionList_Args ConnectionList
# ConnectionList 命令 # ConnectionGet 命令
CMD_ConnectionGet 获取连接到 VPN Server 的 TCP 信息一览表 CMD_ConnectionGet 获取连接到 VPN Server 的 TCP 信息一览表
CMD_ConnectionGet_Help 获取与 VPN Server 连接的 TCP/IP 连接的详细信息。\n可以获得 [连接名],[连接种类],[连接主机名],[连接主机 IP],[联机主机端口 TCP],[连接时间],[服务器品牌],[服务器版本],[服务器铭牌号],[客户机品牌],[客户机版本],[客户机铭牌号] 等信息。 \n要运行此命令,需要管理员权限。 CMD_ConnectionGet_Help 获取与 VPN Server 连接的 TCP/IP 连接的详细信息。\n可以获得 [连接名],[连接种类],[连接主机名],[连接主机 IP],[联机主机端口 TCP],[连接时间],[服务器品牌],[服务器版本],[服务器铭牌号],[客户机品牌],[客户机版本],[客户机铭牌号] 等信息。 \n要运行此命令,需要管理员权限。
CMD_ConnectionGet_Args ConnectionGet [name] CMD_ConnectionGet_Args ConnectionGet [name]
@@ -7044,7 +7044,7 @@ CMD_RemoteDisable_Args RemoteDisable
################################################### ###################################################
# # # #
# 下面这是VPN工具用的指令 # # 下面这是VPN Tools用的指令 #
# # # #
################################################### ###################################################
+2 -3
View File
@@ -200,7 +200,7 @@ ERR_133 The specified Dynamic DNS hostname is already used. Please change th
ERR_134 The specified Dynamic DNS hostname has an invalid characters. Please change the hostname. ERR_134 The specified Dynamic DNS hostname has an invalid characters. Please change the hostname.
ERR_135 The length of the specified Dynamic DNS hostname is too long. A hostname must be equal or shorter than 31 letters. ERR_135 The length of the specified Dynamic DNS hostname is too long. A hostname must be equal or shorter than 31 letters.
ERR_136 The Dynamic DNS hostname is not specified. ERR_136 The Dynamic DNS hostname is not specified.
ERR_137 The length of the specified Dynamic DNS hostname is too short. A hostname must be equal or longer than 3 letters. ERR_137 The length of the specified Dynamic DNS hostname is too long. A hostname must be equal of longer than 3 letters.
ERR_138 The password of the specified user in the Virtual Hub must be reset before using MS-CHAP v2 authentication. Please ask the administrator of the VPN Server to reset the password by the VPN Server Manager or vpncmd which internal version is 4.0 or greater. Or you can change the password with VPN Client by yourself. ERR_138 The password of the specified user in the Virtual Hub must be reset before using MS-CHAP v2 authentication. Please ask the administrator of the VPN Server to reset the password by the VPN Server Manager or vpncmd which internal version is 4.0 or greater. Or you can change the password with VPN Client by yourself.
ERR_139 The connection to the Dynamic DNS server has been disconnected. ERR_139 The connection to the Dynamic DNS server has been disconnected.
ERR_140 Failed to initialize the ICMP (Ping) protocol. The process of the VPN Server might be running in a normal-user privileges. In such case, run the VPN Server as a system service. (in Linux / UNIX, run it in root privileges.) ERR_140 Failed to initialize the ICMP (Ping) protocol. The process of the VPN Server might be running in a normal-user privileges. In such case, run the VPN Server as a system service. (in Linux / UNIX, run it in root privileges.)
@@ -4839,7 +4839,7 @@ CMD_ConnectionList_Help Use this to get a list of TCP/IP connections that are cu
CMD_ConnectionList_Args ConnectionList CMD_ConnectionList_Args ConnectionList
# ConnectionList command # ConnectionGet command
CMD_ConnectionGet Get Information of TCP Connections Connecting to the VPN Server CMD_ConnectionGet Get Information of TCP Connections Connecting to the VPN Server
CMD_ConnectionGet_Help Use this to get detailed information of a specific TCP/IP connection that is connecting to the VPN Server. \nYou can get the following information: Connection Name, Connection Type, Source Hostname, Source IP Address, Source Port Number (TCP), Connection Start, Server Product Name, Server Version, Server Build Number, Client Product Name, Client Version, and Client Build Number. \nTo execute this command, you must have VPN Server administrator privileges. CMD_ConnectionGet_Help Use this to get detailed information of a specific TCP/IP connection that is connecting to the VPN Server. \nYou can get the following information: Connection Name, Connection Type, Source Hostname, Source IP Address, Source Port Number (TCP), Connection Start, Server Product Name, Server Version, Server Build Number, Client Product Name, Client Version, and Client Build Number. \nTo execute this command, you must have VPN Server administrator privileges.
CMD_ConnectionGet_Args ConnectionGet [name] CMD_ConnectionGet_Args ConnectionGet [name]
@@ -7422,4 +7422,3 @@ SW_LINK_NAME_LANGUAGE_COMMENT Change the display language setting of %s.
SW_LINK_NAME_DEBUG Debugging Information Collecting Tool SW_LINK_NAME_DEBUG Debugging Information Collecting Tool
SW_LINK_NAME_DEBUG_COMMENT Collects debugging information of SoftEther VPN. Use this tool only if your support staff asks you to do so. SW_LINK_NAME_DEBUG_COMMENT Collects debugging information of SoftEther VPN. Use this tool only if your support staff asks you to do so.
+5 -5
View File
@@ -4558,7 +4558,7 @@ CMD_SyslogGet_COLUMN_2 syslog Server Host Name
CMD_SyslogGet_COLUMN_3 syslog Server Port Number CMD_SyslogGet_COLUMN_3 syslog Server Port Number
# ConnectionList command # ConnectionGet command
CMD_ConnectionList Get List of TCP Connections Connecting to the VPN Server CMD_ConnectionList Get List of TCP Connections Connecting to the VPN Server
CMD_ConnectionList_Help Use this to get a list of TCP/IP connections that are currently connecting to the VPN Server. It does not display the TCP connections that have been established as VPN sessions. To get the list of TCP/IP connections that have been established as VPN sessions, you can use the SessionList command. \nYou can get the following: Connection Name, Connection Source, Connection Start and Type.\nTo execute this command, you must have VPN Server administrator privileges. CMD_ConnectionList_Help Use this to get a list of TCP/IP connections that are currently connecting to the VPN Server. It does not display the TCP connections that have been established as VPN sessions. To get the list of TCP/IP connections that have been established as VPN sessions, you can use the SessionList command. \nYou can get the following: Connection Name, Connection Source, Connection Start and Type.\nTo execute this command, you must have VPN Server administrator privileges.
CMD_ConnectionList_Args ConnectionList CMD_ConnectionList_Args ConnectionList
@@ -4851,7 +4851,7 @@ CMD_HubList_Args ListaHub
# Hub command # Hub command
CMD_Hub Select Virtual Hub to Manage CMD_Hub Select Virtual Hub to Manage
CMD_Hub_Help Use this to select the Virtual Hub to be the target of administration. For an administration utility with the status of being connected to a VPN Server, before executing a command to set or manage a Virtual Hub, you must use the Hub command to select the Virtual Hub to manage. \nWhen in the status of being connected to a VPN Server in Virtual Hub Admin Mode, you can select a single Virtual Hub to be the target of administration but you cannot select other Virtual Hubs. When having the status of being connected to the VPN Server in Server Admin Mode, you can make all Virtual Hubs the target of administration. \nTo get a list of Virtual Hubs that currently exist on the VPN Server, use the HubList command. \nFor the VPN Bridge, you can only select the Virtual Hub that has the name "BRIDGE". CMD_Hub_Help Use this to select the Virtual Hub to be the target of administration. For an administration utility with the status of being connected to a VPN Server, before executing a command to set or manage a Virtual Hub, you must use the Hub command to select the Virtual Hub to manage. \nWhen in the status of being connected to a VPN Server in Virtual Hub Admin Mode, you can select a single Virtual Hub to be the target of administration but you cannot select other Virtual Hubs. When having the status of being connected to the VPN Server in Server Admin Mode, you can make all Virtual Hubs the target of administration. \nTo get a list of Virtual Hubs that currently exist on the VPN Server, use the HubList command. \nFor the VPN Bridge, you can only select the Virtual Hub that has the name "BRIDGE".
CMD_Hub_Args Hub [nome] CMD_Hub_Args Hub [name]
CMD_Hub_[name] Specify the name of the Virtual Hub to manage. If this parameter is left unspecified, the Select Virtual Hub to Manage will be cancelled. CMD_Hub_[name] Specify the name of the Virtual Hub to manage. If this parameter is left unspecified, the Select Virtual Hub to Manage will be cancelled.
CMD_Hub_Unselected The Virtual Hub selection has been unselected. CMD_Hub_Unselected The Virtual Hub selection has been unselected.
CMD_Hub_Selected The Virtual Hub "%S" has been selected. CMD_Hub_Selected The Virtual Hub "%S" has been selected.
@@ -5619,7 +5619,7 @@ CMD_UserRadiusSet_ALIAS When this parameter is set, it is possible to make the u
CMD_UserRadiusSet_Prompt_ALIAS Alias Name for Authentication (Optional): CMD_UserRadiusSet_Prompt_ALIAS Alias Name for Authentication (Optional):
# UserNTLMSet コマンド # UserNTLMSet command
CMD_UserNTLMSet Set NT Domain Authentication for User Auth Type CMD_UserNTLMSet Set NT Domain Authentication for User Auth Type
CMD_UserNTLMSet_Help Use this to set NT Domain Authentication as the auth type for a user that is registered on the security account database of the currently managed Virtual Hub. When a user connects to a Virtual Hub using a user name that is set for NT Domain authentication, the user name and the user input password is sent to the Windows NT / 2000 / Server 2003 / Server 2008 / Server 2008 R2 / Server 2012 Domain Controller or Active Directory Server where the server checks the user name and password, then if the verification is successful, that user is allowed VPN connection. \nTo use NT Domain authentication, the VPN Server must be operating on a Windows NT 4.0, Windows 2000, Windows XP, Windows Vista, Windows Server 2008, Windows Server 2008 R2 or Windows Server 2012 operating system that is connected to that domain. For details please contact the VPN Server's administrator. \nTo get the list of currently registered users, use the UserList command. \nThis command cannot be run on VPN Bridge. \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a member server on a cluster. CMD_UserNTLMSet_Help Use this to set NT Domain Authentication as the auth type for a user that is registered on the security account database of the currently managed Virtual Hub. When a user connects to a Virtual Hub using a user name that is set for NT Domain authentication, the user name and the user input password is sent to the Windows NT / 2000 / Server 2003 / Server 2008 / Server 2008 R2 / Server 2012 Domain Controller or Active Directory Server where the server checks the user name and password, then if the verification is successful, that user is allowed VPN connection. \nTo use NT Domain authentication, the VPN Server must be operating on a Windows NT 4.0, Windows 2000, Windows XP, Windows Vista, Windows Server 2008, Windows Server 2008 R2 or Windows Server 2012 operating system that is connected to that domain. For details please contact the VPN Server's administrator. \nTo get the list of currently registered users, use the UserList command. \nThis command cannot be run on VPN Bridge. \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a member server on a cluster.
CMD_UserNTLMSet_Args UserNTLMSet [name] [/ALIAS:alias_name] CMD_UserNTLMSet_Args UserNTLMSet [name] [/ALIAS:alias_name]
@@ -6193,7 +6193,7 @@ CMD_VpnAzureGetStatus_PRINT_CONNECTED Connection to VPN Azure Cloud Server is Es
CMD_VpnAzureGetStatus_PRINT_HOSTNAME Hostname of this VPN Server on VPN Azure Service CMD_VpnAzureGetStatus_PRINT_HOSTNAME Hostname of this VPN Server on VPN Azure Service
# VpnAzureSetStatus command # VpnAzureSetEnable command
CMD_VpnAzureSetEnable Enable / Disable VPN Azure Function CMD_VpnAzureSetEnable Enable / Disable VPN Azure Function
CMD_VpnAzureSetEnable_Help Enable or disable the VPN Azure function.\n\nVPN Azure makes it easier to establish a VPN Session from your home PC to your office PC. While a VPN connection is established, you can access to any other servers on the private network of your company.\nYou don't need a global IP address on the office PC (VPN Server). It can work behind firewalls or NATs. No network administrator's configuration required. You can use the built-in SSTP-VPN Client of Windows in your home PC.\nVPN Azure is a cloud VPN service operated by SoftEther VPN Project. VPN Azure is free of charge and available to anyone. Visit http://www.vpnazure.net/ to see details and how-to-use instructions.\n\nThe VPN Azure hostname is same to the hostname of the Dynamic DNS setting, but altering the domain suffix to "vpnazure.net". To change the hostname use the DynamicDnsSetHostname command.\n\nTo execute this command, you must have VPN Server administrator privileges. \nThis command cannot be run on VPN Bridge.\nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. CMD_VpnAzureSetEnable_Help Enable or disable the VPN Azure function.\n\nVPN Azure makes it easier to establish a VPN Session from your home PC to your office PC. While a VPN connection is established, you can access to any other servers on the private network of your company.\nYou don't need a global IP address on the office PC (VPN Server). It can work behind firewalls or NATs. No network administrator's configuration required. You can use the built-in SSTP-VPN Client of Windows in your home PC.\nVPN Azure is a cloud VPN service operated by SoftEther VPN Project. VPN Azure is free of charge and available to anyone. Visit http://www.vpnazure.net/ to see details and how-to-use instructions.\n\nThe VPN Azure hostname is same to the hostname of the Dynamic DNS setting, but altering the domain suffix to "vpnazure.net". To change the hostname use the DynamicDnsSetHostname command.\n\nTo execute this command, you must have VPN Server administrator privileges. \nThis command cannot be run on VPN Bridge.\nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster.
CMD_VpnAzureSetEnable_Args VpnAzureSetEnable [yes|no] CMD_VpnAzureSetEnable_Args VpnAzureSetEnable [yes|no]
@@ -6702,7 +6702,7 @@ CMD_AccountOpensslCertSet_PROMPT_KEYNAME Specify the openssl engine specific key
CMD_AccountOpensslCertSet_PROMPT_ENGINENAME Specify the openssl engine name: CMD_AccountOpensslCertSet_PROMPT_ENGINENAME Specify the openssl engine name:
# AccountRetrySet コマンド # AccountRetrySet command
CMD_AccountRetrySet Set Interval between Connection Retries for Connection Failures or Disconnections of VPN Connection Setting CMD_AccountRetrySet Set Interval between Connection Retries for Connection Failures or Disconnections of VPN Connection Setting
CMD_AccountRetrySet_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting attempts to connect to a VPN Server, use this to specify the interval to wait between connection attempts and the limit of how many times to retry connecting when communication with the VPN Server has been disconnected or when the connection process failed. \nIf the user authentication type is Smart Card Authentication, no connection retry will be performed regardless of the Number of Connection Attempts setting. CMD_AccountRetrySet_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting attempts to connect to a VPN Server, use this to specify the interval to wait between connection attempts and the limit of how many times to retry connecting when communication with the VPN Server has been disconnected or when the connection process failed. \nIf the user authentication type is Smart Card Authentication, no connection retry will be performed regardless of the Number of Connection Attempts setting.
CMD_AccountRetrySet_Args AccountRetrySet [name] [/NUM:num_retry] [/INTERVAL:retry_interval] CMD_AccountRetrySet_Args AccountRetrySet [name] [/NUM:num_retry] [/INTERVAL:retry_interval]
+2 -2
View File
@@ -4839,7 +4839,7 @@ CMD_ConnectionList_Help Use this to get a list of TCP/IP connections that are cu
CMD_ConnectionList_Args ConnectionList CMD_ConnectionList_Args ConnectionList
# ConnectionList command # ConnectionGet command
CMD_ConnectionGet Get Information of TCP Connections Connecting to the VPN Server CMD_ConnectionGet Get Information of TCP Connections Connecting to the VPN Server
CMD_ConnectionGet_Help Use this to get detailed information of a specific TCP/IP connection that is connecting to the VPN Server. \nYou can get the following information: Connection Name, Connection Type, Source Hostname, Source IP Address, Source Port Number (TCP), Connection Start, Server Product Name, Server Version, Server Build Number, Client Product Name, Client Version, and Client Build Number. \nTo execute this command, you must have VPN Server administrator privileges. CMD_ConnectionGet_Help Use this to get detailed information of a specific TCP/IP connection that is connecting to the VPN Server. \nYou can get the following information: Connection Name, Connection Type, Source Hostname, Source IP Address, Source Port Number (TCP), Connection Start, Server Product Name, Server Version, Server Build Number, Client Product Name, Client Version, and Client Build Number. \nTo execute this command, you must have VPN Server administrator privileges.
CMD_ConnectionGet_Args ConnectionGet [name] CMD_ConnectionGet_Args ConnectionGet [name]
@@ -7122,7 +7122,7 @@ CMD_TrafficClient_ERROR_HOSTPORT The host name or port number is incorrectly spe
# TrafficServer command # TrafficServer command
CMD_TrafficServer Запустить средство тестирования скорости сетевого трафика в режиме сервера CMD_TrafficServer Запустить средство тестирования скорости сетевого трафика в режиме сервера
CMD_TrafficServer_Help Используется для запуска инструмента измерения пропускной способности в режиме сервера. \nДве команды, TrafficClient и TrafficServer, используются для измерения пропускной способности между двумя компьютерами, соединенными сетью IP. \nУкажите номер порта и запустите серверную часть с помощью команды TrafficServer, чтобы прослушивать подключение от TrafficClient другого компьютера. \nВы можете отобразить более подробную информацию об инструменте измерения пропускной способности, введя "TrafficClient ?". \n\nПримечание. Эту команду можно вызвать из утилиты управления командной строкой SoftEther VPN. Вы также можете выполнить эту команду при подключении к текущему VPN-серверу или VPN клиенту в режиме администрирования, но фактически осуществляет связь и измеряет пропускную способность тот компьютер, на котором выполняется команда, а не компьютер с которого выполнено подключение в режиме администрирования. CMD_TrafficServer_Help Используется для запуска инструмента измерения пропускной способности в режиме сервера. \nДве команды, TrafficClient и TrafficServer, используются для измерения пропускной способности между двумя компьютерами, соединенными сетью IP. \nУкажите номер порта и запустите серверную часть с помощью команды TrafficServer, чтобы прослушивать подключение от TrafficClient другого компьютера. \nВы можете отобразить более подробную информацию об инструменте измерения пропускной способности, введя "TrafficClient ?". \n\nПримечание. Эту команду можно вызвать из утилиты управления командной строкой SoftEther VPN. Вы также можете выполнить эту команду при подключении к текущему VPN-серверу или VPN клиенту в режиме администрирования, но фактически осуществляет связь и измеряет пропускную способность тот компьютер, на котором выполняется команда, а не компьютер с которого выполнено подключение в режиме администрирования.
CMD_TrafficServer_Args TrafficServer [порт] [/NOHUP:да|нет] CMD_TrafficServer_Args TrafficServer [port] [/NOHUP:yes|no]
CMD_TrafficServer_[port] Укажите номер порта для прослушивания соединения. Если указанный порт уже используется другой программой или порт не может быть открыт, произойдет ошибка CMD_TrafficServer_[port] Укажите номер порта для прослушивания соединения. Если указанный порт уже используется другой программой или порт не может быть открыт, произойдет ошибка
CMD_TrafficServer_NOHUP Если указано «да», серверная часть игнорирует любой ввод с консоли и никогда не останавливается. Это удобно, если вы хотите запустить TrafficServer в бесконечном режиме. CMD_TrafficServer_NOHUP Если указано «да», серверная часть игнорирует любой ввод с консоли и никогда не останавливается. Это удобно, если вы хотите запустить TrafficServer в бесконечном режиме.
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -4855,7 +4855,7 @@ CMD_ConnectionList_Help 現在,先獲取與 VPN Server 連接的 TCP/IP 一
CMD_ConnectionList_Args ConnectionList CMD_ConnectionList_Args ConnectionList
# ConnectionList 命令 # ConnectionGet 命令
CMD_ConnectionGet 獲取連接到 VPN Server 的 TCP 資訊一覽表 CMD_ConnectionGet 獲取連接到 VPN Server 的 TCP 資訊一覽表
CMD_ConnectionGet_Help 獲取與 VPN Server 連接的 TCP/IP 連接的詳細資訊。\n可以獲得 [連接名],[連接種類],[連接主機名稱],[連接主機 IP],[連線主機埠 TCP],[連線時間],[伺服器品牌],[伺服器版本],[伺服器銘牌號],[客戶機品牌],[客戶機版本],[客戶機銘牌號] 等資訊。 \n要運行此命令,需要管理員許可權。 CMD_ConnectionGet_Help 獲取與 VPN Server 連接的 TCP/IP 連接的詳細資訊。\n可以獲得 [連接名],[連接種類],[連接主機名稱],[連接主機 IP],[連線主機埠 TCP],[連線時間],[伺服器品牌],[伺服器版本],[伺服器銘牌號],[客戶機品牌],[客戶機版本],[客戶機銘牌號] 等資訊。 \n要運行此命令,需要管理員許可權。
CMD_ConnectionGet_Args ConnectionGet [name] CMD_ConnectionGet_Args ConnectionGet [name]
@@ -7046,7 +7046,7 @@ CMD_RemoteDisable_Args RemoteDisable
################################################### ###################################################
# # # #
# 下面這是VPN工具用的指令 # # 下面這是VPN Tools用的指令 #
# # # #
################################################### ###################################################
File diff suppressed because it is too large Load Diff