docs: add usage description
parent
72493d4c3c
commit
a85c08c1d3
11
README.md
11
README.md
|
|
@ -1,3 +1,12 @@
|
||||||
# wghttp
|
# wghttp
|
||||||
|
|
||||||
Turn WireGuard to an HTTP & SOCKS5 proxy.
|
Turn WireGuard to an HTTP & SOCKS5 proxies.
|
||||||
|
|
||||||
|
The HTTP & SOCKS5 proxies are served on same port. It runs in userspace,
|
||||||
|
without requirement of WireGuard kernel module or TUN device.
|
||||||
|
|
||||||
|
In remote exit mode, the proxy is served on local network, and the traffic
|
||||||
|
from proxy server goes to WireGuard network.
|
||||||
|
|
||||||
|
In local exit mode, the proxy is served on WireGuard network, and the traffic
|
||||||
|
from WireGuard goes to local network.
|
||||||
|
|
|
||||||
16
main.go
16
main.go
|
|
@ -1,11 +1,14 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"context"
|
"context"
|
||||||
|
_ "embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/jessevdk/go-flags"
|
"github.com/jessevdk/go-flags"
|
||||||
"golang.zx2c4.com/wireguard/device"
|
"golang.zx2c4.com/wireguard/device"
|
||||||
|
|
@ -16,6 +19,9 @@ import (
|
||||||
"github.com/zhsj/wghttp/internal/third_party/tailscale/socks5"
|
"github.com/zhsj/wghttp/internal/third_party/tailscale/socks5"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:embed README.md
|
||||||
|
var readme string
|
||||||
|
|
||||||
var logger *device.Logger
|
var logger *device.Logger
|
||||||
|
|
||||||
type options struct {
|
type options struct {
|
||||||
|
|
@ -24,7 +30,7 @@ type options struct {
|
||||||
PrivateKey string `long:"private-key" env:"PRIVATE_KEY" required:"true" description:"WireGuard client private key in base64 format"`
|
PrivateKey string `long:"private-key" env:"PRIVATE_KEY" required:"true" description:"WireGuard client private key in base64 format"`
|
||||||
ClientIPs []string `long:"client-ip" env:"CLIENT_IP" env-delim:"," required:"true" description:"WireGuard client IP address"`
|
ClientIPs []string `long:"client-ip" env:"CLIENT_IP" env-delim:"," required:"true" description:"WireGuard client IP address"`
|
||||||
Listen string `long:"listen" env:"LISTEN" default:"localhost:8080" description:"HTTP & SOCKS5 server address"`
|
Listen string `long:"listen" env:"LISTEN" default:"localhost:8080" description:"HTTP & SOCKS5 server address"`
|
||||||
DNS []string `long:"dns" env:"DNS" env-delim:"," default:"" description:"DNS server IP address, only used WireGuard"`
|
DNS []string `long:"dns" env:"DNS" env-delim:"," default:"" description:"DNS server IP address, only used in WireGuard"`
|
||||||
MTU int `long:"mtu" env:"MTU" default:"1280" description:"MTU"`
|
MTU int `long:"mtu" env:"MTU" default:"1280" description:"MTU"`
|
||||||
ExitMode string `long:"exit-mode" env:"EXIT_MODE" default:"remote" choice:"remote" choice:"local" description:"Exit mode"`
|
ExitMode string `long:"exit-mode" env:"EXIT_MODE" default:"remote" choice:"remote" choice:"local" description:"Exit mode"`
|
||||||
Verbose bool `short:"v" long:"verbose" description:"Show verbose debug information"`
|
Verbose bool `short:"v" long:"verbose" description:"Show verbose debug information"`
|
||||||
|
|
@ -35,6 +41,14 @@ type options struct {
|
||||||
func main() {
|
func main() {
|
||||||
opts := options{}
|
opts := options{}
|
||||||
parser := flags.NewParser(&opts, flags.Default)
|
parser := flags.NewParser(&opts, flags.Default)
|
||||||
|
parser.Usage = `[OPTIONS]
|
||||||
|
|
||||||
|
Description:`
|
||||||
|
scanner := bufio.NewScanner(strings.NewReader(strings.TrimPrefix(readme, "# wghttp\n")))
|
||||||
|
for scanner.Scan() {
|
||||||
|
parser.Usage += " " + scanner.Text() + "\n"
|
||||||
|
}
|
||||||
|
parser.Usage = strings.TrimSuffix(parser.Usage, "\n")
|
||||||
if _, err := parser.Parse(); err != nil {
|
if _, err := parser.Parse(); err != nil {
|
||||||
code := 1
|
code := 1
|
||||||
if fe, ok := err.(*flags.Error); ok {
|
if fe, ok := err.(*flags.Error); ok {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue