2 Commits

2 changed files with 91 additions and 15 deletions

View File

@@ -10,13 +10,13 @@ A Go-based command-line tool to manage SSH tunnels. This tool allows you to:
## Installation
```
go install github.com/yourusername/sshtunnel/cmd@latest
go install git.mvl.sh/vleeuwenmenno/sshtunnel/cmd@latest
```
Or clone this repository and build it yourself:
```
git clone https://github.com/yourusername/sshtunnel.git
git clone https://git.mvl.sh/vleeuwenmenno/sshtunnel.git
cd sshtunnel
go build -o sshtunnel ./cmd
```
@@ -34,31 +34,31 @@ This will display all active SSH tunnels with their IDs, local ports, remote end
### Starting a new tunnel
```
sshtunnel start -local 8080 -remote 80 -host example.com -server user@ssh-server.com
sshtunnel start -l 8080 -r 80 -H example.com -s user@ssh-server.com
```
Options:
- `-local`: Local port to forward (required)
- `-remote`: Remote port to forward to (required)
- `-host`: Remote host to forward to (default: "localhost")
- `-server`: SSH server address in the format user@host (required)
- `-identity`: Path to SSH identity file (optional)
- `-l`: Local port to forward (required)
- `-r`: Remote port to forward to (required)
- `-H`: Remote host to forward to (default: "localhost")
- `-s`: SSH server address in the format user@host (required)
- `-i`: Path to SSH identity file (optional)
### Stopping tunnels
Stop a specific tunnel by ID:
```
sshtunnel stop -id 1
sshtunnel stop -i 1
```
Stop all active tunnels:
```
sshtunnel stop -all
sshtunnel stop --all
```
Options:
- `-id`: ID of the tunnel to stop
- `-all`: Stop all tunnels
- `-i`: ID of the tunnel to stop
- `--all`: Stop all tunnels
### Viewing traffic statistics
@@ -69,12 +69,12 @@ sshtunnel stats --all
View statistics for a specific tunnel:
```
sshtunnel stats --id 1
sshtunnel stats -i 1
```
Monitor tunnel traffic in real-time:
```
sshtunnel stats --id 1 --watch
sshtunnel stats -i 1 --watch
```
Options:
@@ -107,4 +107,4 @@ The tool creates SSH tunnels using the system's SSH client and manages them by t
## License
MIT
MIT

76
bin/scripts/release.sh Executable file
View File

@@ -0,0 +1,76 @@
#!/usr/bin/env bash
source bin/helpers/func.sh
printfe "%s\n" "green" "SSH Tunnel Manager Release Script"
printfe "%s\n" "normal" "==============================="
# Check if git is installed
if ! command -v git &> /dev/null; then
printfe "%s\n" "red" "Error: git is not installed"
exit 1
fi
# Check if we're in a git repository
if ! git rev-parse --is-inside-work-tree &> /dev/null; then
printfe "%s\n" "red" "Error: Not in a git repository"
exit 1
fi
# Get the latest tag or default to v0.0.0 if no tags exist
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
# Parse the version number
if [[ $LATEST_TAG =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
MAJOR=${BASH_REMATCH[1]}
MINOR=${BASH_REMATCH[2]}
PATCH=${BASH_REMATCH[3]}
else
printfe "%s\n" "red" "Error: Could not parse latest tag: $LATEST_TAG"
exit 1
fi
# Calculate the next patch version
NEXT_PATCH=$((PATCH + 1))
NEXT_VERSION="v$MAJOR.$MINOR.$NEXT_PATCH"
# Display current version and suggested next version
printfe "%s" "cyan" "Current version: "
printfe "%s\n" "yellow" "$LATEST_TAG" false
printfe "%s" "cyan" "Suggested next version: "
printfe "%s\n" "yellow" "$NEXT_VERSION" false
# Ask for confirmation or custom version
read -p "Accept suggested version? (y/n) " ACCEPT
if [[ $ACCEPT != "y" && $ACCEPT != "Y" ]]; then
read -p "Enter custom version (format vX.Y.Z): " CUSTOM_VERSION
if [[ $CUSTOM_VERSION =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
NEXT_VERSION=$CUSTOM_VERSION
else
printfe "%s\n" "red" "Error: Invalid version format. Must be vX.Y.Z where X, Y, Z are numbers."
exit 1
fi
fi
printfe "%s" "cyan" "Creating and pushing tag: "
printfe "%s\n" "yellow" "$NEXT_VERSION" false
# Make sure we have the latest changes
printfe "%s\n" "cyan" "Fetching latest tags..."
log_and_run git fetch --tags
# Create the new tag
printfe "%s\n" "cyan" "Creating new tag..."
log_and_run git tag "$NEXT_VERSION"
# Push the new tag
printfe "%s\n" "cyan" "Pushing new tag..."
log_and_run git push origin "$NEXT_VERSION"
# Update the latest tag
printfe "%s\n" "cyan" "Updating 'latest' tag..."
log_and_run git tag -f latest "$NEXT_VERSION"
log_and_run git push -f origin latest
printfe "%s\n" "green" "Successfully tagged and pushed version $NEXT_VERSION"
printfe "%s\n" "cyan" "Also updated 'latest' tag to point to $NEXT_VERSION"