From 848fd50815066c91baff81bbc28abacf5efbc55f Mon Sep 17 00:00:00 2001 From: mame82 Date: Mon, 28 May 2018 14:34:59 +0000 Subject: [PATCH] Fix cli DHCP options, started WiFi config for CLI, wrapped wpa_supplicant into service --- cli_client/cmd_net.go | 16 ++-- cli_client/cmd_wifi.go | 160 +++++++++++++++++++++++++++++++++++++++ cli_client/rpc_client.go | 22 ++++++ dependencies.sh | 1 + notes.txt | 4 + service/wifi.go | 113 ++++++++++++++++++++++++++- 6 files changed, 307 insertions(+), 9 deletions(-) create mode 100644 cli_client/cmd_wifi.go create mode 100644 notes.txt diff --git a/cli_client/cmd_net.go b/cli_client/cmd_net.go index d6e421a..49de020 100644 --- a/cli_client/cmd_net.go +++ b/cli_client/cmd_net.go @@ -33,7 +33,6 @@ func init(){ } */ -// usbCmd represents the usb command var netCmd = &cobra.Command{ Use: "NET", Short: "Configure Network settings of ethernet interfaces (including USB ethernet if enabled)", @@ -147,10 +146,13 @@ func createManualSettings(iface string, ip4 string, mask4 string, disabled bool) func parseDhcpServerOptions(strOptions []string) (options map[uint32]string, err error) { options = map[uint32]string{} + for _, strOpt := range strOptions { splOpt := strings.SplitN(strOpt,":", 2) if len(splOpt) == 0 { - return nil,errors.New(fmt.Sprintf("Invalid DHCP option: %s\nOption format is \":[DHCPOptionValue]\"", strOpt)) + //return nil,errors.New(fmt.Sprintf("Invalid DHCP option: %s\nOption format is \":[DHCPOptionValue]\"", strOpt)) + //ignore empty options + continue } optNum, err := strconv.Atoi(splOpt[0]) if err != nil || optNum < 0 { @@ -174,10 +176,14 @@ func parseDhcpServerOptions(strOptions []string) (options map[uint32]string, err func parseDhcpServerRanges(strRanges []string) (ranges []*pb.DHCPServerRange, err error) { ranges = []*pb.DHCPServerRange{} + if len(strRanges) == 0 { + return nil,errors.New(fmt.Sprintf("Missing DHCP range: At least one range should be provided to allow assigning IP addresses to clients\n")) + } + for _,strRange := range strRanges { splRange := strings.Split(strRange, "|") if len(splRange) != 3 && len(splRange) != 2 { - return nil,errors.New(fmt.Sprintf("Invalid DHCP range: %s\nOption format is \"|[|leaseTime]\"", strRange)) + return nil,errors.New(fmt.Sprintf("Invalid DHCP range: %s\nformat is \"|[|leaseTime]\"", strRange)) } if net.ParseIP(splRange[0]) == nil { @@ -277,6 +283,6 @@ func init() { netSetManualCmd.Flags().StringVarP(&tmpStrNetmask4, "netmask","m", "", "The IPv4 netmask to use for the interface") netSetDHCPServerCmd.Flags().StringVarP(&tmpStrAddress4, "address","a", "", "The IPv4 address to use for the interface") netSetDHCPServerCmd.Flags().StringVarP(&tmpStrNetmask4, "netmask","m", "", "The IPv4 netmask to use for the interface") - netSetDHCPServerCmd.Flags().StringSliceVarP(&tmpDHCPSrvRanges, "range", "r",[]string{""}, "A DHCP Server range in form \"|[|lease time]\" (the flag could be used multiple times)") - netSetDHCPServerCmd.Flags().StringSliceVarP(&tmpDHCPSrvOptions, "option", "o",[]string{""}, "A DHCP Server option in form \"