github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/list-portprofiles/main.go (about) 1 // Copyright (c) 2014 Dimitri Sokolyuk. All rights reserved. 2 // Use of this source code is governed by ISC-style license 3 // that can be found in the LICENSE file. 4 5 // Example command list-portprofile 6 // list portprofiles of a given site 7 package main 8 9 import ( 10 "flag" 11 "fmt" 12 "log" 13 "os" 14 "strconv" 15 "strings" 16 "text/tabwriter" 17 18 "github.com/dim13/unifi" 19 ) 20 21 var ( 22 host = flag.String("host", "unifi", "Controller hostname") 23 user = flag.String("user", "admin", "Controller username") 24 pass = flag.String("pass", "unifi", "Controller password") 25 port = flag.String("port", "8443", "Controller port") 26 version = flag.Int("version", 5, "Controller base version") 27 siteid = flag.String("siteid", "default", "Sitename or desctription") 28 ) 29 30 func main() { 31 w := new(tabwriter.Writer) 32 w.Init(os.Stdout, 0, 8, 3, ' ', 0) 33 defer w.Flush() 34 35 flag.Parse() 36 37 u, err := unifi.Login(*user, *pass, *host, *port, *siteid, *version) 38 if err != nil { 39 log.Fatalln("Login returned error: ", err) 40 } 41 defer u.Logout() 42 43 site, err := u.Site(*siteid) 44 if err != nil { 45 log.Fatal(err) 46 } 47 48 // Returns a slice of devices 49 profiles, err := u.PortProfiles(site) 50 51 if err != nil { 52 log.Fatalln(err) 53 } 54 55 // Returns a map of networks with ID as key 56 nm, err := u.NetworkMap(site) 57 58 if err != nil { 59 log.Fatalln(err) 60 } 61 62 // Output headline 63 fmt.Fprintln(w, "ID\tName\tSiteID\tOpMode\tAutoneg\tNativeVLAN\tAttrNodelete\tAttrNoEdit\tForward\tTaggedNetworks") 64 65 for _, p := range profiles { 66 id := p.ID // string 67 name := p.Name // string 68 siteid := p.SiteID // string 69 opmode := p.OpMode // string 70 autoneg := p.Autoneg // bool 71 nativeNetID := p.NativeNetworkconfID // string 72 attrNoDelete := p.AttrNoDelete // bool 73 attrNoEdit := p.AttrNoEdit // bool 74 forward := p.Forward // string 75 taggedNetworkIDs := p.TaggedNetworkconfIds // 76 77 nativeVlan := "" 78 nativeVlan = nm[nativeNetID].Name 79 80 taggedNetworks := "" 81 for _, t := range taggedNetworkIDs { 82 taggedNetworks += fmt.Sprintf("%s ", nm[t].Name) 83 } 84 taggedNetworks = strings.TrimSpace(taggedNetworks) 85 86 fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", id, name, siteid, opmode, strconv.FormatBool(autoneg), nativeVlan, strconv.FormatBool(attrNoDelete), strconv.FormatBool(attrNoEdit), forward, taggedNetworks) 87 } 88 }