mirror of
https://github.com/boringproxy/boringproxy.git
synced 2025-02-25 18:55:29 -06:00
Add usage information
Before not giving any command didn't really give much feedback beyond "invalid arguments". This adds a basic usage message, and tells people that you can use "boringproxy server -h". I moved the "Starting up" log message because otherwise that would get printed when asking for "server -h". I also added error checks for the flag parsing; I think this isn't *strictly* needed, but I remember running in to problems once by omitting it (although I've forgotten what that problem was, exactly).
This commit is contained in:
parent
7034cb8671
commit
a67253c55a
@ -5,7 +5,6 @@ import (
|
|||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/caddyserver/certmagic"
|
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
@ -14,6 +13,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/caddyserver/certmagic"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BoringProxyConfig struct {
|
type BoringProxyConfig struct {
|
||||||
@ -40,7 +41,12 @@ func Listen() {
|
|||||||
adminDomain := flagSet.String("admin-domain", "", "Admin Domain")
|
adminDomain := flagSet.String("admin-domain", "", "Admin Domain")
|
||||||
sshServerPort := flagSet.Int("ssh-server-port", 22, "SSH Server Port")
|
sshServerPort := flagSet.Int("ssh-server-port", 22, "SSH Server Port")
|
||||||
certDir := flagSet.String("cert-dir", "", "TLS cert directory")
|
certDir := flagSet.String("cert-dir", "", "TLS cert directory")
|
||||||
flagSet.Parse(os.Args[2:])
|
err := flagSet.Parse(os.Args[2:])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s: parsing flags: %s\n", os.Args[0], err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("Starting up")
|
||||||
|
|
||||||
webUiDomain := *adminDomain
|
webUiDomain := *adminDomain
|
||||||
|
|
||||||
@ -64,7 +70,7 @@ func Listen() {
|
|||||||
//certmagic.DefaultACME.CA = certmagic.LetsEncryptStagingCA
|
//certmagic.DefaultACME.CA = certmagic.LetsEncryptStagingCA
|
||||||
certConfig := certmagic.NewDefault()
|
certConfig := certmagic.NewDefault()
|
||||||
|
|
||||||
err := certConfig.ManageSync([]string{config.WebUiDomain})
|
err = certConfig.ManageSync([]string{config.WebUiDomain})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
11
client.go
11
client.go
@ -7,8 +7,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/caddyserver/certmagic"
|
|
||||||
"golang.org/x/crypto/ssh"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
@ -18,6 +16,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/caddyserver/certmagic"
|
||||||
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BoringProxyClient struct {
|
type BoringProxyClient struct {
|
||||||
@ -42,7 +43,10 @@ func NewBoringProxyClient() *BoringProxyClient {
|
|||||||
certDir := flagSet.String("cert-dir", "", "TLS cert directory")
|
certDir := flagSet.String("cert-dir", "", "TLS cert directory")
|
||||||
acmeEmail := flagSet.String("acme-email", "", "Email for ACME (ie Let's Encrypt)")
|
acmeEmail := flagSet.String("acme-email", "", "Email for ACME (ie Let's Encrypt)")
|
||||||
dnsServer := flagSet.String("dns-server", "", "Custom DNS server")
|
dnsServer := flagSet.String("dns-server", "", "Custom DNS server")
|
||||||
flagSet.Parse(os.Args[2:])
|
err := flagSet.Parse(os.Args[2:])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s: parsing flags: %s\n", os.Args[0], err)
|
||||||
|
}
|
||||||
|
|
||||||
if *dnsServer != "" {
|
if *dnsServer != "" {
|
||||||
net.DefaultResolver = &net.Resolver{
|
net.DefaultResolver = &net.Resolver{
|
||||||
@ -63,7 +67,6 @@ func NewBoringProxyClient() *BoringProxyClient {
|
|||||||
// running on a machine where 443 isn't bound, so we need a different
|
// running on a machine where 443 isn't bound, so we need a different
|
||||||
// port to hack around this. See here for more details:
|
// port to hack around this. See here for more details:
|
||||||
// https://github.com/caddyserver/certmagic/issues/111
|
// https://github.com/caddyserver/certmagic/issues/111
|
||||||
var err error
|
|
||||||
certmagic.HTTPSPort, err = randomOpenPort()
|
certmagic.HTTPSPort, err = randomOpenPort()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Failed get random port for TLS challenges")
|
log.Fatal("Failed get random port for TLS challenges")
|
||||||
|
21
main.go
21
main.go
@ -2,29 +2,36 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
const usage = `Usage: %s [command] [flags]
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
server Start a new server.
|
||||||
|
client Connect to a server.
|
||||||
|
|
||||||
|
Use "%[1]s command -h" for a list of flags for the command.
|
||||||
|
`
|
||||||
|
|
||||||
|
func main() {
|
||||||
if len(os.Args) < 2 {
|
if len(os.Args) < 2 {
|
||||||
fmt.Println("Invalid arguments")
|
fmt.Fprintln(os.Stderr, os.Args[0]+": Need a command")
|
||||||
|
fmt.Printf(usage, os.Args[0])
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
command := os.Args[1]
|
command := os.Args[1]
|
||||||
|
|
||||||
switch command {
|
switch command {
|
||||||
|
case "help", "-h", "--help", "-help":
|
||||||
|
fmt.Printf(usage, os.Args[0])
|
||||||
case "server":
|
case "server":
|
||||||
log.Println("Starting up")
|
|
||||||
Listen()
|
Listen()
|
||||||
|
|
||||||
case "client":
|
case "client":
|
||||||
client := NewBoringProxyClient()
|
client := NewBoringProxyClient()
|
||||||
client.RunPuppetClient()
|
client.RunPuppetClient()
|
||||||
default:
|
default:
|
||||||
fmt.Println("Invalid command " + command)
|
fmt.Fprintln(os.Stderr, os.Args[0]+": Invalid command "+command)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user