added build scripts
This commit is contained in:
283
BUILD.md
Normal file
283
BUILD.md
Normal file
@@ -0,0 +1,283 @@
|
|||||||
|
# PSK-Proxy-Tunnel Build Guide
|
||||||
|
|
||||||
|
This guide explains how to build single executable binaries for the PSK-Proxy-Tunnel project using the `pkg` tool.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- **Node.js**: Version 18.0.0 or higher
|
||||||
|
- **npm**: Usually comes with Node.js
|
||||||
|
- **Git**: To clone the repository
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### 1. Install Dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Build for Current Platform
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS/Linux: auto-detect current platform via script
|
||||||
|
./build.sh
|
||||||
|
|
||||||
|
# Windows: auto-detect Windows via script
|
||||||
|
build.bat
|
||||||
|
|
||||||
|
# Or run a specific platform via npm
|
||||||
|
npm run build:macos # macOS
|
||||||
|
npm run build:linux # Linux
|
||||||
|
npm run build:windows # Windows
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Build for All Platforms
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build Scripts
|
||||||
|
|
||||||
|
### Using the Build Scripts
|
||||||
|
|
||||||
|
#### Unix/Linux/macOS
|
||||||
|
```bash
|
||||||
|
# Make the script executable
|
||||||
|
chmod +x build.sh
|
||||||
|
|
||||||
|
# Build for current platform
|
||||||
|
./build.sh
|
||||||
|
|
||||||
|
# Build for specific platform
|
||||||
|
./build.sh --platform macos
|
||||||
|
./build.sh --platform linux
|
||||||
|
./build.sh --platform windows
|
||||||
|
|
||||||
|
# Build for all platforms
|
||||||
|
./build.sh --all
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
./build.sh --clean
|
||||||
|
|
||||||
|
# Show help
|
||||||
|
./build.sh --help
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
```cmd
|
||||||
|
# Build for Windows (default)
|
||||||
|
build.bat
|
||||||
|
|
||||||
|
# Build for all platforms
|
||||||
|
build.bat --all
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
build.bat --clean
|
||||||
|
|
||||||
|
# Show help
|
||||||
|
build.bat --help
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using npm Scripts Directly
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build for specific platform
|
||||||
|
npm run build:macos
|
||||||
|
npm run build:linux
|
||||||
|
npm run build:windows
|
||||||
|
|
||||||
|
# Build for all platforms
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
npm run clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build Output
|
||||||
|
|
||||||
|
After building, you'll find the executables in the `dist/` directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
dist/
|
||||||
|
├── psk-proxy-server-macos # macOS server executable
|
||||||
|
├── psk-proxy-client-macos # macOS client executable
|
||||||
|
├── psk-proxy-server-linux # Linux server executable
|
||||||
|
├── psk-proxy-client-linux # Linux client executable
|
||||||
|
├── psk-proxy-server-windows.exe # Windows server executable
|
||||||
|
└── psk-proxy-client-windows.exe # Windows client executable
|
||||||
|
```
|
||||||
|
|
||||||
|
## Platform-Specific Builds
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
```bash
|
||||||
|
npm run build:macos
|
||||||
|
# Creates: psk-proxy-server-macos, psk-proxy-client-macos
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
```bash
|
||||||
|
npm run build:linux
|
||||||
|
# Creates: psk-proxy-server-linux, psk-proxy-client-linux
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
```bash
|
||||||
|
npm run build:windows
|
||||||
|
# Creates: psk-proxy-server-windows.exe, psk-proxy-client-windows.exe
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cross-Platform Building
|
||||||
|
|
||||||
|
You can build for other platforms from any operating system:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build for all platforms from macOS
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Build for all platforms from Linux
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Build for all platforms from Windows
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using the Built Executables
|
||||||
|
|
||||||
|
### Server
|
||||||
|
```bash
|
||||||
|
# macOS/Linux
|
||||||
|
./dist/psk-proxy-server-macos --tunnel-port 8443 --tcp-port 8080 --host 0.0.0.0 --psk-file /path/to/psk.key
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
.\dist\psk-proxy-server-windows.exe --tunnel-port 8443 --tcp-port 8080 --host 0.0.0.0 --psk-file C:\path\to\psk.key
|
||||||
|
```
|
||||||
|
|
||||||
|
### Client
|
||||||
|
```bash
|
||||||
|
# macOS/Linux
|
||||||
|
./dist/psk-proxy-client-macos --server-host server.example.com --server-port 8443 --origin-host 127.0.0.1 --origin-port 8080 --psk-file /path/to/psk.key --identity client1
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
.\dist\psk-proxy-client-windows.exe --server-host server.example.com --server-port 8443 --origin-host 127.0.0.1 --origin-port 8080 --psk-file C:\path\to\psk.key --identity client1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build Configuration
|
||||||
|
|
||||||
|
The build configuration is defined in `package.json` under the `pkg` section:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"pkg": {
|
||||||
|
"assets": [],
|
||||||
|
"scripts": [],
|
||||||
|
"targets": [
|
||||||
|
"node18-macos-x64",
|
||||||
|
"node18-linux-x64",
|
||||||
|
"node18-win-x64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Available Targets
|
||||||
|
|
||||||
|
- `node18-macos-x64`: macOS 64-bit
|
||||||
|
- `node18-linux-x64`: Linux 64-bit
|
||||||
|
- `node18-win-x64`: Windows 64-bit
|
||||||
|
|
||||||
|
You can modify these targets to support different Node.js versions or architectures.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
1. **"pkg command not found"**
|
||||||
|
```bash
|
||||||
|
npm install -g pkg
|
||||||
|
# or use the local version
|
||||||
|
npx pkg proxy-server.js
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Build fails with permission errors**
|
||||||
|
```bash
|
||||||
|
# Make sure the build script is executable
|
||||||
|
chmod +x build.sh
|
||||||
|
|
||||||
|
# Or run with sudo if needed
|
||||||
|
sudo npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Executable doesn't run on target platform**
|
||||||
|
- Ensure you're building for the correct target platform
|
||||||
|
- Check that the target platform supports the Node.js version you're using
|
||||||
|
- Verify the executable has proper permissions
|
||||||
|
|
||||||
|
4. **Missing dependencies in built executable**
|
||||||
|
- The `pkg` tool automatically bundles Node.js built-in modules
|
||||||
|
- External dependencies are included automatically
|
||||||
|
- If you have custom assets, add them to the `pkg.assets` array
|
||||||
|
|
||||||
|
### Performance Considerations
|
||||||
|
|
||||||
|
- **File Size**: Single executables are larger than the source code because they include Node.js runtime
|
||||||
|
- **Startup Time**: Slightly slower startup compared to running with `node` directly
|
||||||
|
- **Memory Usage**: Similar to running with Node.js directly
|
||||||
|
|
||||||
|
### Security Notes
|
||||||
|
|
||||||
|
- Built executables contain your source code (though it's compiled)
|
||||||
|
- The `pkg` tool doesn't obfuscate or encrypt your code
|
||||||
|
- Consider this when distributing executables with sensitive information
|
||||||
|
|
||||||
|
## Advanced Configuration
|
||||||
|
|
||||||
|
### Custom pkg Options
|
||||||
|
|
||||||
|
You can customize the build process by modifying the `pkg` section in `package.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"pkg": {
|
||||||
|
"assets": [
|
||||||
|
"config/*.json",
|
||||||
|
"templates/*.html"
|
||||||
|
],
|
||||||
|
"scripts": [
|
||||||
|
"scripts/**/*.js"
|
||||||
|
],
|
||||||
|
"targets": [
|
||||||
|
"node18-macos-x64",
|
||||||
|
"node18-linux-x64",
|
||||||
|
"node18-win-x64"
|
||||||
|
],
|
||||||
|
"outputPath": "custom-dist"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
You can set environment variables to customize the build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set custom output directory
|
||||||
|
PKG_OUTPUT_PATH=./my-dist npm run build
|
||||||
|
|
||||||
|
# Set custom Node.js version
|
||||||
|
PKG_NODE_VERSION=16 npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
When adding new build targets or modifying the build process:
|
||||||
|
|
||||||
|
1. Update the `package.json` scripts
|
||||||
|
2. Update the build scripts (`build.sh` and `build.bat`)
|
||||||
|
3. Test builds on all target platforms
|
||||||
|
4. Update this documentation
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This build system is part of the PSK-Proxy-Tunnel project and follows the same license terms.
|
158
build.bat
Normal file
158
build.bat
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
@echo off
|
||||||
|
REM PSK-Proxy-Tunnel Build Script for Windows
|
||||||
|
REM This script builds single executable binaries for Windows
|
||||||
|
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
REM Colors for output (Windows 10+ supports ANSI colors)
|
||||||
|
set "RED=[91m"
|
||||||
|
set "GREEN=[92m"
|
||||||
|
set "YELLOW=[93m"
|
||||||
|
set "BLUE=[94m"
|
||||||
|
set "NC=[0m"
|
||||||
|
|
||||||
|
REM Function to print colored output
|
||||||
|
:print_status
|
||||||
|
echo %BLUE%[INFO]%NC% %~1
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
:print_success
|
||||||
|
echo %GREEN%[SUCCESS]%NC% %~1
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
:print_warning
|
||||||
|
echo %YELLOW%[WARNING]%NC% %~1
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
:print_error
|
||||||
|
echo %RED%[ERROR]%NC% %~1
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
REM Function to check if command exists
|
||||||
|
:command_exists
|
||||||
|
where %1 >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
exit /b 0
|
||||||
|
) else (
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Function to show help
|
||||||
|
:show_help
|
||||||
|
echo PSK-Proxy-Tunnel Build Script for Windows
|
||||||
|
echo.
|
||||||
|
echo Usage: %0 [OPTIONS]
|
||||||
|
echo.
|
||||||
|
echo Options:
|
||||||
|
echo --windows Build for Windows (default)
|
||||||
|
echo --all Build for all platforms
|
||||||
|
echo --clean Clean build artifacts
|
||||||
|
echo --help Show this help message
|
||||||
|
echo.
|
||||||
|
echo Examples:
|
||||||
|
echo %0 --windows Build for Windows only
|
||||||
|
echo %0 --all Build for all platforms
|
||||||
|
echo %0 --clean Clean build artifacts
|
||||||
|
echo.
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
REM Function to clean build artifacts
|
||||||
|
:clean_build
|
||||||
|
call :print_status "Cleaning build artifacts..."
|
||||||
|
call npm run clean
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
call :print_success "Build artifacts cleaned"
|
||||||
|
) else (
|
||||||
|
call :print_error "Failed to clean build artifacts"
|
||||||
|
)
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
REM Function to build for Windows
|
||||||
|
:build_windows
|
||||||
|
call :print_status "Building for Windows..."
|
||||||
|
call npm run prebuild
|
||||||
|
call npm run build:windows
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
call :print_success "Build completed for Windows"
|
||||||
|
) else (
|
||||||
|
call :print_error "Build failed for Windows"
|
||||||
|
)
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
REM Function to build for all platforms
|
||||||
|
:build_all
|
||||||
|
call :print_status "Building for all platforms..."
|
||||||
|
call npm run build
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
call :print_success "Build completed for all platforms"
|
||||||
|
) else (
|
||||||
|
call :print_error "Build failed for all platforms"
|
||||||
|
)
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
REM Main script logic
|
||||||
|
:main
|
||||||
|
REM Check if we're in the right directory
|
||||||
|
if not exist "package.json" (
|
||||||
|
call :print_error "package.json not found. Please run this script from the project root directory."
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Check if Node.js is installed
|
||||||
|
call :command_exists node
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
call :print_error "Node.js is not installed. Please install Node.js first."
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Check if npm is installed
|
||||||
|
call :command_exists npm
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
call :print_error "npm is not installed. Please install npm first."
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Install dependencies if node_modules doesn't exist
|
||||||
|
if not exist "node_modules" (
|
||||||
|
call :print_status "Installing dependencies..."
|
||||||
|
call npm install
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
call :print_success "Dependencies installed"
|
||||||
|
) else (
|
||||||
|
call :print_error "Failed to install dependencies"
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Parse command line arguments
|
||||||
|
if "%1"=="" (
|
||||||
|
REM No arguments provided, build for Windows
|
||||||
|
call :build_windows
|
||||||
|
goto :eof
|
||||||
|
)
|
||||||
|
|
||||||
|
:parse_args
|
||||||
|
if "%1"=="--windows" (
|
||||||
|
call :build_windows
|
||||||
|
shift
|
||||||
|
goto :parse_args
|
||||||
|
) else if "%1"=="--all" (
|
||||||
|
call :build_all
|
||||||
|
shift
|
||||||
|
goto :parse_args
|
||||||
|
) else if "%1"=="--clean" (
|
||||||
|
call :clean_build
|
||||||
|
shift
|
||||||
|
goto :parse_args
|
||||||
|
) else if "%1"=="--help" (
|
||||||
|
call :show_help
|
||||||
|
exit /b 0
|
||||||
|
) else if "%1"=="" (
|
||||||
|
goto :eof
|
||||||
|
) else (
|
||||||
|
call :print_error "Unknown option: %1"
|
||||||
|
call :show_help
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
goto :parse_args
|
181
build.sh
Executable file
181
build.sh
Executable file
@@ -0,0 +1,181 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# PSK-Proxy-Tunnel Build Script
|
||||||
|
# This script builds single executable binaries for different platforms
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Function to print colored output
|
||||||
|
print_status() {
|
||||||
|
echo -e "${BLUE}[INFO]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_warning() {
|
||||||
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}[ERROR]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to check if command exists
|
||||||
|
command_exists() {
|
||||||
|
command -v "$1" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to detect current platform
|
||||||
|
detect_platform() {
|
||||||
|
case "$(uname -s)" in
|
||||||
|
Darwin*) echo "macos" ;;
|
||||||
|
Linux*) echo "linux" ;;
|
||||||
|
CYGWIN*|MINGW*|MSYS*) echo "windows" ;;
|
||||||
|
*) echo "unknown" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to build for specific platform
|
||||||
|
build_for_platform() {
|
||||||
|
local platform=$1
|
||||||
|
print_status "Building for $platform..."
|
||||||
|
|
||||||
|
# Ensure dist initialized and clean for single-platform builds
|
||||||
|
npm run prebuild
|
||||||
|
|
||||||
|
case $platform in
|
||||||
|
"macos")
|
||||||
|
npm run build:macos
|
||||||
|
;;
|
||||||
|
"linux")
|
||||||
|
npm run build:linux
|
||||||
|
;;
|
||||||
|
"windows")
|
||||||
|
npm run build:windows
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print_error "Unknown platform: $platform"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
print_success "Build completed for $platform"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to build for all platforms
|
||||||
|
build_all() {
|
||||||
|
print_status "Building for all platforms..."
|
||||||
|
npm run build
|
||||||
|
print_success "Build completed for all platforms"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to show help
|
||||||
|
show_help() {
|
||||||
|
echo "PSK-Proxy-Tunnel Build Script"
|
||||||
|
echo ""
|
||||||
|
echo "Usage: $0 [OPTIONS]"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -p, --platform PLATFORM Build for specific platform (macos|linux|windows)"
|
||||||
|
echo " -a, --all Build for all platforms"
|
||||||
|
echo " -c, --clean Clean build artifacts"
|
||||||
|
echo " -h, --help Show this help message"
|
||||||
|
echo ""
|
||||||
|
echo "Examples:"
|
||||||
|
echo " $0 --platform macos Build for macOS only"
|
||||||
|
echo " $0 --all Build for all platforms"
|
||||||
|
echo " $0 --clean Clean build artifacts"
|
||||||
|
echo ""
|
||||||
|
echo "Current platform: $(detect_platform)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to clean build artifacts
|
||||||
|
clean_build() {
|
||||||
|
print_status "Cleaning build artifacts..."
|
||||||
|
npm run clean
|
||||||
|
print_success "Build artifacts cleaned"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main script logic
|
||||||
|
main() {
|
||||||
|
# Check if we're in the right directory
|
||||||
|
if [ ! -f "package.json" ]; then
|
||||||
|
print_error "package.json not found. Please run this script from the project root directory."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if Node.js is installed
|
||||||
|
if ! command_exists node; then
|
||||||
|
print_error "Node.js is not installed. Please install Node.js first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if npm is installed
|
||||||
|
if ! command_exists npm; then
|
||||||
|
print_error "npm is not installed. Please install npm first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install dependencies if node_modules doesn't exist
|
||||||
|
if [ ! -d "node_modules" ]; then
|
||||||
|
print_status "Installing dependencies..."
|
||||||
|
npm install
|
||||||
|
print_success "Dependencies installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse command line arguments
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
# No arguments provided, build for current platform
|
||||||
|
local current_platform=$(detect_platform)
|
||||||
|
if [ "$current_platform" = "unknown" ]; then
|
||||||
|
print_warning "Could not detect platform, building for all platforms"
|
||||||
|
build_all
|
||||||
|
else
|
||||||
|
print_status "Building for detected platform: $current_platform"
|
||||||
|
build_for_platform "$current_platform"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-p|--platform)
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
print_error "Platform not specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
build_for_platform "$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-a|--all)
|
||||||
|
build_all
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-c|--clean)
|
||||||
|
clean_build
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print_error "Unknown option: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run main function with all arguments
|
||||||
|
main "$@"
|
51
package.json
Normal file
51
package.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"name": "psk-proxy-tunnel",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "TLS-PSK multiplexed TCP tunnel server and local HTTP proxy client for secure NAT traversal and TCP forwarding",
|
||||||
|
"main": "proxy-client.js",
|
||||||
|
"type": "commonjs",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"clean": "node -e \"try{require('fs').rmSync('dist',{recursive:true,force:true})}catch(e){}\"",
|
||||||
|
"prebuild": "npm run clean && node -e \"require('fs').mkdirSync('dist',{recursive:true})\"",
|
||||||
|
"build": "npm run build:macos && npm run build:linux && npm run build:windows",
|
||||||
|
"build:macos": "npm run build:server:macos && npm run build:client:macos",
|
||||||
|
"build:server:macos": "pkg proxy-server.js --targets node18-macos-x64 --output dist/psk-proxy-server-macos",
|
||||||
|
"build:client:macos": "pkg proxy-client.js --targets node18-macos-x64 --output dist/psk-proxy-client-macos",
|
||||||
|
"build:linux": "npm run build:server:linux && npm run build:client:linux",
|
||||||
|
"build:server:linux": "pkg proxy-server.js --targets node18-linux-x64 --output dist/psk-proxy-server-linux",
|
||||||
|
"build:client:linux": "pkg proxy-client.js --targets node18-linux-x64 --output dist/psk-proxy-client-linux",
|
||||||
|
"build:windows": "npm run build:server:windows && npm run build:client:windows",
|
||||||
|
"build:server:windows": "pkg proxy-server.js --targets node18-win-x64 --output dist/psk-proxy-server-windows.exe",
|
||||||
|
"build:client:windows": "pkg proxy-client.js --targets node18-win-x64 --output dist/psk-proxy-client-windows.exe",
|
||||||
|
"start:server": "node proxy-server.js",
|
||||||
|
"start:client": "node proxy-client.js"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.jaydenha.uk/Jayden/PSK-Proxy-Tunnel.git"
|
||||||
|
},
|
||||||
|
"author": "Jayden",
|
||||||
|
"dependencies": {
|
||||||
|
"commander": "^11.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"pkg": "^5.8.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"psk-proxy-server": "./proxy-server.js",
|
||||||
|
"psk-proxy-client": "./proxy-client.js"
|
||||||
|
},
|
||||||
|
"pkg": {
|
||||||
|
"assets": [],
|
||||||
|
"scripts": [],
|
||||||
|
"targets": [
|
||||||
|
"node18-macos-x64",
|
||||||
|
"node18-linux-x64",
|
||||||
|
"node18-win-x64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user