Add flag allow-unknown-authority to get command. Print usage when no file url has been specified

main
Stefano 2022-02-03 13:35:27 +01:00
parent dd6ad0099d
commit bb7b4c59ad
1 changed files with 18 additions and 3 deletions

21
main.go
View File

@ -2,6 +2,7 @@ package main
import ( import (
"bufio" "bufio"
"crypto/x509"
"flag" "flag"
"fmt" "fmt"
"os" "os"
@ -94,11 +95,18 @@ func transferLoop(transfer *XdccTransfer) {
// TODO: do clean-up operations here // TODO: do clean-up operations here
} }
func suggestUnknownAuthoritySwitch(err error) {
if err.Error() == (x509.UnknownAuthorityError{}.Error()) {
fmt.Println("use the --allow-unknown-authority flag to skip certificate verification")
}
}
func doTransfer(transfer *XdccTransfer) { func doTransfer(transfer *XdccTransfer) {
err := transfer.Start() err := transfer.Start()
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
suggestUnknownAuthoritySwitch(err)
return return
} }
@ -145,11 +153,19 @@ func loadUrlListFile(filePath string) []string {
return urlList return urlList
} }
func printGetUsageAndExit(flagSet *flag.FlagSet) {
fmt.Printf("usage: get url1 url2 ... [-o path] [-i file] [--allow-unknown-authority]\n\nFlag set:\n")
flagSet.PrintDefaults()
os.Exit(0)
}
func getCommand(args []string) { func getCommand(args []string) {
getCmd := flag.NewFlagSet("get", flag.ExitOnError) getCmd := flag.NewFlagSet("get", flag.ExitOnError)
path := getCmd.String("o", ".", "output folder of dowloaded file") path := getCmd.String("o", ".", "output folder of dowloaded file")
inputFile := getCmd.String("i", "", "input file containing a list of urls") inputFile := getCmd.String("i", "", "input file containing a list of urls")
skipCertificateCheck := getCmd.Bool("allow-unknown-authority", false, "skip x509 certificate check during tls connection")
urlList := parseFlags(getCmd, args) urlList := parseFlags(getCmd, args)
if *inputFile != "" { if *inputFile != "" {
@ -157,8 +173,7 @@ func getCommand(args []string) {
} }
if len(urlList) == 0 { if len(urlList) == 0 {
fmt.Println("no file url provided") printGetUsageAndExit(getCmd)
os.Exit(1)
} }
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
@ -172,7 +187,7 @@ func getCommand(args []string) {
} }
wg.Add(1) wg.Add(1)
transfer := NewXdccTransfer(*url, *path) transfer := NewXdccTransfer(*url, *path, *skipCertificateCheck)
go func(transfer *XdccTransfer) { go func(transfer *XdccTransfer) {
doTransfer(transfer) doTransfer(transfer)
wg.Done() wg.Done()