github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/disable-port/main.go (about) 1 // Copyright (c) 2014 The unifi Authors. 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 disable-port 6 // Disables a port of a USW 7 package main 8 9 import ( 10 "flag" 11 "log" 12 "os" 13 "text/tabwriter" 14 15 "github.com/dim13/unifi" 16 ) 17 18 var ( 19 host = flag.String("host", "unifi", "Controller hostname") 20 user = flag.String("user", "admin", "Controller username") 21 pass = flag.String("pass", "unifi", "Controller password") 22 port = flag.String("port", "8443", "Controller port") 23 version = flag.Int("version", 5, "Controller base version") 24 siteid = flag.String("siteid", "default", "Sitename or description") 25 26 devicename = flag.String("devicename", "", "Name of the device") 27 index = flag.Int("index", 0, "Port Index") 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 the USW 49 usw, err := u.USW(site, *devicename) 50 51 if err != nil { 52 log.Fatalln(err) 53 } 54 55 if err != nil { 56 log.Fatalln(err) 57 } 58 59 // Get port profile name 60 profilename := "Disabled" 61 profile, err := u.PortProfile(site, profilename) 62 63 if err != nil { 64 log.Fatalln(err) 65 } 66 67 overrides := usw.PortOverrides 68 69 var found bool 70 for i := range usw.PortOverrides { 71 if overrides[i].PortIdx == *index { 72 overrides[i].PortconfID = profile.ID 73 overrides[i].POEMode = unifi.POEModeOff 74 overrides[i].Name = "Disabled by script" 75 found = true 76 break 77 } 78 } 79 // If not found, create a new override for the given port and add it to the slice 80 if !found { 81 var o unifi.PortOverride 82 o.PortIdx = *index 83 o.PortconfID = profile.ID 84 o.POEMode = unifi.POEModeOff 85 o.Name = "Disabled by script" 86 overrides = append(overrides, o) 87 } 88 u.SetPortoverrides(site, usw.DeviceID, overrides) 89 }